Java提供了几种写入文件的方法。可以使用FileWriter
,BufferedWriter
,java 7 Files
和FileOutputStream
来编入文件。
让我们简要介绍一下在Java中用来执行写入文件操作的四个方法。
FileWriter
:FileWriter
是用Java编写文件的最简单方法。它提供了重载的write
方法,可以将int
,byte
数组和String
写入文件。还可以使用FileWriter
编入String
或byte
数组的一部分。FileWriter
直接写入文件,在写入次数较少时使用它。BufferedWriter
:BufferedWriter
几乎与FileWriter
类似,但它使用内部缓冲区将数据写入文件。因此,如果写入操作的数量更多,则实际的IO操作会更少,性能也会更好。当写入操作的次数更多时,应该使用BufferedWriter
。FileOutputStream
:FileWriter
和BufferedWriter
用于将文本写入文件,但是当需要将原始流数据写入文件时,应该使用FileOutputStream
来写入文件。Files
:Java 7引入了文件实用程序类,可以使用它的write
方法写入文件。在内部,它使用OutputStream
将字节数组写入文件。
Java写入文件示例
下面是一个示例,演示了如何使用FileWriter
,BufferedWriter
,FileOutputStream
和Files
在java中编入文件。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
public class WriteFile {
/**
* 该类显示了如何在java中写入文件
* @param args
* @throws IOException
*/
public static void main(String[] args) {
String data = "Write to File Example from yiibai.com..";
int noOfLines = 10000;
writeUsingFileWriter(data);
writeUsingBufferedWriter(data, noOfLines);
writeUsingFiles(data);
writeUsingOutputStream(data);
System.out.println("DONE");
}
/**
* 使用Streams处理原始数据
* @param data
*/
private static void writeUsingOutputStream(String data) {
OutputStream os = null;
try {
os = new FileOutputStream(new File("D:/users/maxsu/os.txt"));
os.write(data.getBytes(), 0, data.length());
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 使用Java 1.7中的Files类来编入文件,在内部使用OutputStream
* @param data
*/
private static void writeUsingFiles(String data) {
try {
Files.write(Paths.get("D:/users/maxsu/files.txt"), data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 当写操作次数更多时,使用BufferedWriter
* 它使用内部缓冲区来减少实际IO操作并节省时间
* @param data
* @param noOfLines
*/
private static void writeUsingBufferedWriter(String data, int noOfLines) {
File file = new File("D:/users/maxsu/BufferedWriter.txt");
FileWriter fr = null;
BufferedWriter br = null;
String dataWithNewLine=data+System.getProperty("line.separator");
try{
fr = new FileWriter(file);
br = new BufferedWriter(fr);
for(int i = noOfLines; i>0; i--){
br.write(dataWithNewLine);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*当写操作次数较少时使用FileWriter
* @param data
*/
private static void writeUsingFileWriter(String data) {
File file = new File("D:/users/maxsu/FileWriter.txt");
FileWriter fr = null;
try {
fr = new FileWriter(file);
fr.write(data);
} catch (IOException e) {
e.printStackTrace();
}finally{
//close resources
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
上面是在java中编写文件的标准方法,应该根据项目要求选择其中一个。