如何用Java写入文件
时间:2020-01-09 10:35:31 来源:igfitidea点击:
这篇文章显示了使用Java写入文件的各种选项。
在Java中,有两个类FileWriter和FileOutputStream用于写入文件。这两个FileWriter中的一个用于写入字符流,而FileOutputStream用于写入原始字节流。
通常,Writer立即将其输出发送到基础字符或者字节流。除非需要即时输出,否则建议将BufferedWriter包装在其write()操作可能会很昂贵的所有Writer周围,例如FileWriters和OutputStreamWriters。
因此,用于在Java中写入文件的类是BufferedWriter和BufferedOutputStream。
要查看可用于读取Java文件的其他选项,请查看此文章如何读取Java文件
除了这些类之外,Java 7中添加的Files类还提供了用Java写入文件的方法。有Files.write()方法可将字节写入文件。还有一个Files.newBufferedWriter()方法,该方法返回BufferedWriter,可用于以有效方式将文本写入文件。
因此,在Java中,有四个选项可用于写入文件
- 使用BufferedWriter
- 使用BufferedOutputStream
- 使用Files.write()方法
- 使用Files.newBufferedWriter()方法
Java程序使用BufferedWriter写入文件
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class WriteToFile {
public static void main(String[] args) {
writeFile("D:\test.txt");
}
private static void writeFile(String fileName){
BufferedWriter bw = null;
try {
// wrapping FileWriter instance
bw = new BufferedWriter(new FileWriter(fileName));
bw.write("This is a test line");
bw.newLine();
bw.write("Line written by Java program in theitroad.com");
}catch (IOException exp){
exp.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 WriteToFile {
public static void main(String[] args) {
writeFile("D:\test.txt");
}
private static void writeFile(String fileName){
BufferedOutputStream bw = null;
try {
bw = new BufferedOutputStream(new FileOutputStream(fileName));
// may have to use \r\n for Windows OS
bw.write("This is a test line\n".getBytes());
bw.write("Line written by Java program in theitroad.com".getBytes());
}catch (IOException exp){
exp.printStackTrace();
}finally{
if(bw != null){
try {
bw.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;
public class WriteToFile {
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());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使用Files.newBufferedWriter()方法写入文件的Java程序
public class WriteToFile {
public static void main(String[] args) {
BufferedWriter bw = null;
String content = "This is a test line.\nLine written by Java program in theitroad.com.";
try {
bw = Files.newBufferedWriter(Paths.get("D:\test.txt"));
bw.write(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(bw != null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
从Java 7开始,我们还可以使用try-with-resources自动关闭资源,而不是使用finally块显式关闭资源。
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class WriteToFile {
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"))) {
bw.write(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

