原文:http://zetcode.com/java/filewriter/
Java FileWriter教程显示了如何使用FileWriter类将文本写入 Java 文件。 请注意,FileWriter有一个严重的限制:它使用默认编码,并且不允许我们显式指定编码。
Java FileWriter
FileWriter是 Java 便利类,用于将文本数据写入文件。 FileWriter扩展了OutputStreamWriter并创建了FileOutputStream。
Java FileWriter构造器
这些是FileWriter构造器:
FileWriter(File file)— 将FileWriter构造为File对象。FileWriter(File file, boolean append)- 将FileWriter对象构造为File对象; 允许附加模式。FileWriter(FileDescriptor fd)- 将FileWriter构造为FileDescriptor。FileWriter(String fileName)- 将FileWriter构造为文件名。FileWriter(String fileName, boolean append)- 将FileWriter对象构造为文件名; 允许附加模式。
Java FileWriter写入文件
使用FileInputStream和FileOutputStream,我们创建用于读取和写入File的流。 找不到文件时,将引发FileNotFoundException。 File是 Java 中文件或目录的表示。
JavaFileWriterEx.java
package com.zetcode;import java.io.FileWriter;import java.io.IOException;public class JavaFileWriterEx {public static void main(String[] args) throws IOException {try (FileWriter writer = new FileWriter("src/resources/myfile.txt")) {writer.write("Today is a sunny day");}}}
该示例使用FileWriter将文本数据写入文件。
try (FileWriter writer = new FileWriter("src/resources/myfile.txt")) {
FileWriter构造器采用字符串作为参数; 它是我们写入的文件名。 完成编写后,我们使用try-with-resources构造来清理资源。
writer.write("Today is a sunny day");
FileWriter的write()方法将文本写入文件。
Java FileWriter附加到文件
使用FileWriter可以将文本附加到文件中。 附加的典型用法是日志记录。
JavaFileWritterAppend.java
package com.zetcode;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class JavaFileWritterAppend {public static void main(String[] args) throws IOException {String fileName = "src/resources/myfile.txt";File myfile = new File(fileName);try (FileWriter writer = new FileWriter(myfile, true)) {writer.write("Tomorrow will be cloudy.");}}}
该代码示例将文本附加到文件。
try (FileWriter writer = new FileWriter(myfile, true)) {
FileWriter的第二个参数告诉我们将附加到文件中。
使用BufferedWriter的FileWriter
BufferedWriter可以提高FileWriter's性能。 BufferedWriter将文本写入字符输出流,缓冲字符以提高写入单个字符,数组和字符串的性能。 可以指定缓冲区大小,也可以接受默认大小; 默认值对于大多数用途来说足够大。
JavaFileWriterBuffered.java
package com.zetcode;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;public class JavaFileWriterBuffered {public static void main(String[] args) throws MalformedURLException, IOException {String text = readText();String fileName = "src/resources/wikipedia_home_page.txt";try (FileWriter writer = new FileWriter(fileName);BufferedWriter bufWriter = new BufferedWriter(writer)) {bufWriter.write(text);}}public static String readText() throws MalformedURLException, IOException {StringBuilder sb;URL url = new URL("https://www.wikipedia.org");try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) {String line;sb = new StringBuilder();while ((line = br.readLine()) != null) {sb.append(line);sb.append(System.lineSeparator());}}return sb.toString();}}
在示例中,我们阅读了维基百科的主页(其 HTML 代码)并将其写入文件。 主页足够大以考虑缓冲。
try (FileWriter writer = new FileWriter(fileName);BufferedWriter bufWriter = new BufferedWriter(writer)) {bufWriter.write(text);}
FileWriter作为参数传递给BufferedWriter。 然后,我们调用BufferedWriter的write()方法来编写文本。
try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) {
读取操作也通过BufferedReader类进行缓冲。
指定编码
FileWriter使用默认编码,并且不允许我们显式指定编码。 如果必须设置编码,则可以使用OutputStreamWriter和FileOutputStream。
JavaFileOutputStreamEx.java
package com.zetcode;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.nio.charset.StandardCharsets;public class JavaFileOutputStreamEx {public static void main(String[] args) throws FileNotFoundException, IOException {String fileName = "src/resources/myfile.txt";try (OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(fileName),StandardCharsets.UTF_8)) {osw.write("Сегодня был прекрасный день.");}}}
该示例使用OutputStreamWriter将文本写入文件。 第二个参数是要使用的字符集。
在本教程中,我们介绍了 Java FileWriter类。 您可能也对相关教程感兴趣: Java FileOutputStream教程, Java 文件时间, Java 附加到文件,用 Java 读取文本文件,用 Java 读写 ICO 图像, Java Swing 教程,Java 教程,用 Java 显示图像。
