我是Java编程的新手,正在寻找用Java编写和附加文件内容的选项。
以下C#选项的类似选项。
File.WriteAllText(string path, string contents, Encoding encoding);
File.AppendAllText(string path, string contents, Encoding encoding);
我虽然使用BufferedWriter,但它可以选择为FileWriter传递true / false(字符串路径,布尔值追加),但是我没有提供编码的选项。
try (FileWriter fw = new FileWriter(path, false);
BufferedWriter bw = new BufferedWriter(fw)) {
bw.write("appending text into file");
}
如果我使用Files.newBufferedWriter初始化BufferedWriter,则可以提供StandardCharsets,但如果有现有文件,则没有附加选项。
try (BufferedWriter bw = Files.newBufferedWriter(Paths.get(path), StandardCharsets.UTF_8)) {
bw.write("test");
bw.append("append test");
}
是否可以同时定义两个选项(附加选项和StandardCharsets)?
答案 0 :(得分:1)
是的。如果您查看Files类的实现,则有如下方法:
public static BufferedWriter newBufferedWriter(Path path, Charset cs, OpenOption... options)
因此您可以调用
之类的方法BufferedWriter bw = Files.newBufferedWriter(Paths.get(path), StandardCharsets.UTF_8,
StandardOpenOption.CREATE, StandardOpenOption.APPEND)
如果使用像Intellij这样的IDE,它会建议您允许使用哪些公共方法。
答案 1 :(得分:0)
您可以尝试java.nio以便将内容追加到现有文件中(如果您使用的是Java 7或更高版本),也许可以执行以下操作:
List<String> newContent = getNewContent(...); // Here you get the lines you want to add
Files.write(myFile, newContent, UTF_8, APPEND, CREATE);
导入需要通过以下方式完成:
java.nio.charset.StandardCharsets.UTF_8, java.nio.file.StandardOpenOption.APPEND, java.nio.file.StandardOpenOption.CREATE
或者您可以尝试使用Guava:
File myFile = new File("/Users/home/dev/log.txt");
String newContent = "This is new content";
Files.append(newContent, myFile, Charsets.UTF_8);