我正在创建一个JFrame,用户可以在该文件中插入新方法。如果文件不存在,程序将创建新文件,然后在那里插入方法。如果文件已经存在,它将尝试使用给定名称创建新方法,但如果文件包含具有相同名称的方法,则它将向用户提供警报。
我能够正确地完成所有这些事情,唯一的问题是在类文件中创建新方法之后,如果用户再次单击Create Method按钮,应用程序不会抛出任何警报,因为它无法读取文件中的新方法名称。当我检查文件内容时,我可以在那里看到新方法,但不知怎的,我的代码无法从文件中读取新代码。这是相同的代码。
File f = null;
f = new File(Report.path + "//src//_TestCases//" + tc_name + ".java");
if (!f.exists()) {
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
f.createNewFile();
bw.write(testcase);
bw.close();
}
Class<?> c = Class.forName("_TestCases." + tc_name);
Method[] m = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++) {
if (m[i].getName().toLowerCase()
.equals(module_name.toLowerCase())) {
JOptionPane
.showMessageDialog(null,
"Module with the given name already exists. Please provide other name.");
return false;
}
}
List<String> lines = Files.readAllLines(f.toPath(),
StandardCharsets.UTF_8);
String text = "";
if (lines.contains(" @AfterClass")) {
text = " @AfterClass";
} else {
text = "@AfterClass";
}
lines.add(lines.indexOf(text), "@Test\npublic void " + module_name
+ "() throws Exception {\n");
Files.write(f.toPath(), lines, StandardCharsets.UTF_8);
for (int i = 0; i < tc_values.size(); i++) {
lines.add(lines.indexOf(text), tc_values.get(i));
Files.write(f.toPath(), lines, StandardCharsets.UTF_8);
}
lines.add(lines.indexOf(text), "\n}\n");
Files.write(f.toPath(), lines, StandardCharsets.UTF_8);
答案 0 :(得分:0)
不确定问题是什么,但是当我改变从文件中获取方法名称的逻辑时,它对我有用。使用扫描程序读取文件内容并获取方法名称,之前使用以下行从文件中获取方法名称。
Method[] m = c.getDeclaredMethods();