如何获取更新的文件文本

时间:2016-07-15 05:19:59

标签: java

我正在创建一个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);

1 个答案:

答案 0 :(得分:0)

不确定问题是什么,但是当我改变从文件中获取方法名称的逻辑时,它对我有用。使用扫描程序读取文件内容并获取方法名称,之前使用以下行从文件中获取方法名称。

 Method[] m = c.getDeclaredMethods();