我有一个包含大量包和.java
文件的eclipse项目。我想知道它是否能够从eclipse以某种文本格式/ json形式检索项目结构?
Package1
java1
method1
method2
method3
...
java2
...
...
Package2
...
就像在json / text文件中那样?
是否有可能使用eclipse?或者我应该编写一个修剪项目目录并递归构建文件结构的代码吗?
我正在尝试这样做,以便我可以使用 D3.js 工具可视化项目层次结构:
答案 0 :(得分:0)
tree yourProjectFolder /F /A > output.txt
即可
答案 1 :(得分:0)
也许下面的代码可以帮到你。
它将打印每个文件夹及其找到的每个文件。如果文件是*.java
,则代码输入它并打印与java方法匹配的所有内容。
此外,如果需要,请更改确定方法的REGEX。该行是:
public static final String JAVA_METHOD_REGEX = "(public|protected|private|static|\\s) +[\\w\\<\\>\\[\\]]+\\s+(\\w+) *\\([^\\)]*\\)";
完整代码:
public class ReadFilesAndMethods {
public static void main(String[] args) throws Exception {
File folder = new File("C:/Workspace/MyProject/src");
listFiles(folder, "");
}
public static final String JAVA_FILE_REGEX = "^\\w+\\.java";
public static final String JAVA_METHOD_REGEX = "(public|protected|private|static|\\s) +[\\w\\<\\>\\[\\]]+\\s+(\\w+) *\\([^\\)]*\\)";
public static void listFiles(File folder, String prefix) throws Exception {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
System.out.println(prefix + fileEntry.getName() + "/");
listFiles(fileEntry, prefix + "\t");
} else {
System.out.println(prefix + fileEntry.getName());
if (fileEntry.getName().matches(JAVA_FILE_REGEX)) {
readMethodsFromJavaFile(fileEntry.getAbsolutePath(), prefix + "\t");
}
}
}
}
public static void readMethodsFromJavaFile(String fileName, String prefix) throws Exception {
Scanner scanner = new Scanner(new File(fileName));
String text = scanner.useDelimiter("\\A").next();
scanner.close();
Pattern pattern = Pattern.compile(JAVA_METHOD_REGEX);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(prefix+matcher.group(0));
}
}
}
输出:
main/
java/
utils/
UsefulStuff.java
public Long getSomething(Class<?> classe)
public Whatever load(String anything)
Start.java
static void main(String[] args)
entity/
system/
User.java
public long getId()
public void setId(long id)
...