用Java如何追加内容到文件中
时间:2020-01-09 10:35:28 来源:igfitidea点击:
在Java中,有两个类FileWriter和FileOutputStream用于写入文件。其中FileWriter用于写入字符流,而FileOutputStream用于写入原始字节流。这两个类都有一个带有布尔参数的构造函数。当该布尔参数作为true传递时,内容将被写入文件的末尾。
例如– public FileWriter(File file,boolean append);
我们应该始终使用包装器类BufferedWriter和BufferedOutputStream,而不是直接使用这些类。
除了这些类之外,Java 7中添加的Files类还提供了添加到Java文件中的方法。有可以使用的Files.write()方法。
Files.write(path, bytes, StandardOpenOption.APPEND);
另一种方法是
Files.newBufferedWriter(Path path, StandardOpenOption.APPEND);
Java程序添加内容到Java文件中
让我们看一下使用上述选项在Java中添加文件的示例。
使用Java BufferedWriter添加到文件
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class AppendFile { public static void main(String[] args) { //Change path for windows appendToFile("D://test.txt"); } private static void appendToFile(String fileName){ BufferedWriter bw = null; try { // wrapping FileWriter instance, passing second arg // as true for appending bw = new BufferedWriter(new FileWriter(fileName, true)); bw.write("This is a test line"); bw.newLine(); bw.write("Line written by Java program in theitroad.com"); bw.newLine(); }catch (IOException e) { e.printStackTrace(); }finally{ if(bw != null){ try { bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
使用Java BufferedOutputStream添加到文件
如果必须写原始字节,则可以使用BufferedOutputStream类。在示例代码中,使用getBytes()方法将字符串编码为字节。
import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class AppendFile { public static void main(String[] args) { //Change path for windows appendToFile("D://test.txt"); } private static void appendToFile(String fileName){ BufferedOutputStream bos = null; try { // wrapping FileOutputStream instance, passing second arg // as true for appending bos = new BufferedOutputStream(new FileOutputStream(fileName, true)); // \r\n for windows bos.write("This is a test line\r\n".getBytes()); bos.write("Line written by Java program in theitroad.com\r\n".getBytes()); }catch (IOException e) { e.printStackTrace(); }finally{ if(bos != null){ try { bos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
使用Files.write()方法添加到文件的Java程序
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class AppendFile { public static void main(String[] args) { String content = "This is a test line.\nLine written by Java program in theitroad.com."; try { Files.write(Paths.get("D:\test.txt"), content.getBytes(), StandardOpenOption.APPEND); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
使用Files.newBufferedWriter()方法添加到文件
import java.io.BufferedWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class AppendFile { public static void main(String[] args) { String content = "This is a test line.\nLine written by Java program in theitroad.com."; try (BufferedWriter bw = Files.newBufferedWriter(Paths.get("D:\test.txt"), StandardOpenOption.APPEND)) { bw.write(content); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
这里try-with-resources用于自动关闭资源,而不是使用finally块显式关闭资源。