用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块显式关闭资源。

