希望你做得很好,这是我的第一个问题
我遇到了一个麻烦:
我们的目标是从代码片段(字段、属性、构造函数(创建java文件我试图通过在读和写文件之间切换来做到这一点
读取文件以获取旧值,删除关闭的"}">
写入文件:新代码段,加上关闭的"}">
我尝试的问题是Files.readAllLine((或FileWriter((不起作用。你可以在下面找到我的源代码。
public static void fillFile(String fileName, String name, String value) throws IOException {
Path path = Paths.get(fileName);
List<String> all = Files.readAllLines(path,StandardCharsets.UTF_8);
System.out.println(" the path "+Paths.get(fileName));
System.out.println(name + " :; "+ value);
System.out.println("to write " + all.toString().replaceAll(", ", " ").substring(1, (all+"").replaceAll(", ", " ").length()-1) + "n" + name + (name.endsWith(")")?"":" = ")+ value+ (name.endsWith(")")?"":";")+"n } ddddddddddddddddddddddd");
FileWriter test = new FileWriter(fileName,true);
test.write(all.toString().replaceAll(", ", " ").substring(1, all.toString().replaceAll(", ", " ").length()-1) + "n" + name + (name.endsWith(")")?"":" = ")+ value+ (name.endsWith(")")?"":";")+"n }");
//test.flush();
test.close();
}
另一个问题:还有其他简单的方法可以达到我的目标吗?
解决方案是FileWriter
类应具有与File.readAllLine()
使用的路径不同的路径
所以我们必须创建一个临时文件,该文件将被复制到所需的fileName
文件,然后我们删除该临时文件
希望这能帮助到需要它的人。它正在工作!!!
public static void fillFile(String fileName, String name, String value) throws IOException {
Path path = Paths.get(fileName);
List<String> all = null;
if (path.toFile().exists()) {
all = Files.readAllLines(path,StandardCharsets.UTF_8);}
if(all!= null) System.out.println(path + " the size of "+ all.toArray(new String[all.size()])+"");
Path path2 = Files.createTempFile(path.getParent(),"test-file", ".java");
Files.write(path2, ((all+"").replaceAll(", ", "n").replaceAll("\[", "").replaceAll("\]", "").substring(1, ((all+"").replaceAll(", ", " ").replaceAll("\[", "").replaceAll("\]", "")).length()-1) + "n" + name + value+ "n" +"}").getBytes());
Files.copy(path2, path, StandardCopyOption.REPLACE_EXISTING);
Files.deleteIfExists(path2);
}