Java写入文件详解:4种常用方法与最佳实践
这是文章《Java 写入文件 – 在Java中写入文件的4种方法》的第1部分(共1部分)。
内容片段: Java提供了几种方法来写入文件。我们可以使用FileWriter、BufferedWriter、Java 7的Files和FileOutputStream来在Java中写入文件。
用Java将内容写入文件
让我们简要了解一下在Java中写入文件操作的四个选项。
Java写入文件的四种方法
- FileWriter:FileWriter是Java中写文件最简单的方式。它提供了重载的write方法,可以向文件写入int、byte数组和字符串。您还可以使用FileWriter写入字符串或字节数组的部分内容。FileWriter直接将数据写入文件中,只有在写入次数较少时才应使用它。
- BufferedWriter:BufferedWriter与FileWriter几乎相似,但它使用内部缓冲区来写入数据到文件中。因此,如果写入操作较多,实际的IO操作将减少,性能会更好。当写入操作较多时,应使用BufferedWriter。
- FileOutputStream:FileWriter和BufferedWriter用于向文件写入文本,但是当需要将原始流数据写入文件时,应使用FileOutputStream来在Java中写文件。
- Files:Java 7引入了Files实用类,可以使用其write函数写入文件。在内部,它使用OutputStream将字节数组写入文件中。
Java 写入文件示例
以下是展示如何使用Java中的FileWriter、BufferedWriter、FileOutputStream和Files来编写文件的示例。文件名:WriteFile.java
package com.Olivia.files;
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 = "我将把这个字符串写入Java文件中";
int noOfLines = 10000;
writeUsingFileWriter(data);
writeUsingBufferedWriter(data, noOfLines);
writeUsingFiles(data);
writeUsingOutputStream(data);
System.out.println("完成");
}
/**
* 当处理原始数据时使用流
* @param data
*/
private static void writeUsingOutputStream(String data) {
OutputStream os = null;
try {
os = new FileOutputStream(new File("/Users/scdev/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("/Users/scdev/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("/Users/scdev/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("/Users/scdev/FileWriter.txt");
FileWriter fr = null;
try {
fr = new FileWriter(file);
fr.write(data);
} catch (IOException e) {
e.printStackTrace();
}finally{
//关闭资源
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
以下是在Java中写入文件的标准方法,根据您的项目需求可选择其中一种。这就是Java写入文件示例的全部内容。
您可以从我们的GitHub存储库中查看更多的Java IO示例。