如何用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(); } } }