如何自动将所有javadoc package.html文件转换为package-info.jav
发布时间:2020-12-15 00:58:05 所属栏目:Java 来源:网络整理
导读:我们在我们的项目中使用了很多遗留的package.html文件,我们希望将它们转换为package-info. java文件.手动执行不是一个选项(文件太多).有没有自动化的好方法? 我们想要转换它们有几个原因: 从javadoc规范:这个文件是JDK 5.0中的新文件,并且优于package.htm
我们在我们的项目中使用了很多遗留的package.html文件,我们希望将它们转换为package-info.
java文件.手动执行不是一个选项(文件太多).有没有自动化的好方法?
我们想要转换它们有几个原因: >从javadoc规范:这个文件是JDK 5.0中的新文件,并且优于package.html. 解决方法
如果您没有运行Windows,则可能需要更改目录分隔符.此外,转换是一个黑客,但它应该工作.出于好奇,你有多少包这个手册不是一个选择?
public class Converter { public static void main(String[] args) { File rootDir = new File("."); renamePackageToPackageInfo(rootDir); } private static void renamePackageToPackageInfo(File dir) { File[] files = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir,String name) { return "package.html".equals(name); } }); for (File file : files) { convertFile(file); } // now recursively rename all the child directories. File[] dirs = dir.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { return pathname.isDirectory(); } }); for (File subdir : dirs) { renamePackageToPackageInfo(subdir); } } private static void convertFile(File html) { // determine the FQN package name String fqpn = getPackageName(html); // check if package-info.java already exists File packageInfo = new File(html.getParent(),"package-info.java"); if (packageInfo.exists()) { System.out.println("package-info.java already exists for package: "+fqpn); return; } // create the i/o streams,and start pumping the data try { PrintWriter out = new PrintWriter(packageInfo); BufferedReader in = new BufferedReader(new FileReader(html)); out.println("/**"); // skip over the headers while (true) { String line = in.readLine(); if (line.equalsIgnoreCase("<BODY>")) break; } // now pump the file into the package-info.java file while (true) { String line = in.readLine(); if (line.equalsIgnoreCase("</BODY>")) break; out.println(" * " + line); } out.println("*/"); out.println("package "+fqpn+";"); out.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // queue the package.html file for deletion //html.deleteOnExit(); } private static String getPackageName(File file) { StringBuilder path = new StringBuilder(file.getParent()); // trim the first two characters (./ or .) path.delete(0,2); // then convert all separators into . (HACK: should use directory separator property) return path.toString().replaceAll("\","."); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |