Java FileWriter 示例
Java 文件写入器
- Java FileWriter 类是包的一部分
java.io
。 - FileWriter 是类的一个子类
java.io.OutputStreamWriter
。 - FileWriter 用于写入字符流。
- FileWriter 用于写入字符文件。其
write()
方法允许您将字符或字符串写入文件。 - FileWriters 通常被更高级别的 Writer 对象包装,例如BufferedWriter或
PrintWriter
,它们提供更好的性能和更高级别、更灵活的方法来写入数据。
FileWriter 构造函数
FileWriter(File file)
:FileWriter
使用指定的FileIOException
对象创建一个对象。如果文件存在但为目录而非常规文件,或者不存在但无法创建,或者由于其他原因无法打开,则抛出异常。FileWriter(File file, boolean append)
:使用指定的File对象创建FileWriter对象。如果第二个参数为 true,则字节将写入文件末尾而不是开头。如果文件存在但为目录而非常规文件,或者不存在但无法创建,或者由于任何其他原因无法打开,则会抛出IOException 。FileWriter(FileDescriptor fd)
:创建与指定文件描述符关联的 FileWriter 对象。FileWriter(String fileName)
IOException
:使用指定的 fileName 创建 FileWriter 对象。如果指定的文件存在但为目录而非常规文件,或者不存在但无法创建,或者由于其他原因无法打开,则抛出异常。FileWriter(String fileName, boolean append)
:使用指定的 fileName 创建一个 FileWriter 对象,该对象带有一个布尔值,表示是否附加写入的数据。如果第二个参数为 true,则数据将写入文件末尾而不是开头。如果指定的文件存在但为目录而非常规文件,或者不存在但无法创建,或者由于任何其他原因无法打开,则会抛出 IOException。
Java FileWriter 示例
java.io.OutputStreamWriter
FileWriter 继承了和类的方法java.io.Writer
。我们通过示例来看一下下面的方法。
写入(int c)
此方法写入由int c指定的单个字符。
package com.journaldev.io.filewriter;
import java.io.FileWriter;
import java.io.IOException;
/**
* Java write file using FileWriter write method
*
* @author pankaj
*
*/
public class FileWriterWriteIntExample {
public static void main(String[] args) {
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("D:/data/file.txt");
//inherited method from java.io.OutputStreamWriter
fileWriter.write(65);
fileWriter.write(66);
fileWriter.write(67);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (fileWriter != null) {
fileWriter.flush();
fileWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileWriter 实现了AutoCloseable
接口,因此我们可以在使用 FileWriter 类时使用资源进行尝试。
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write method using try with resource
*
* @author pankaj
*
*/
public class FileWriterWriteIntTryWithResource {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//inherited method from java.io.OutputStreamWriter
fileWriter.write(65);
fileWriter.write(66);
fileWriter.write(67);
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意:上面的程序fileWriter.write(65)
会将 A 写入文件,因为 65 是字符 A 的十进制值,因此整数 65 将转换为字符 A,另一个也是如此。
写入(字符串 str,int off,int len)
此方法将 String 的一部分str
从 int写入off
int len
。
- str:要写入的字符串
- off:开始读取字符的偏移量
- len:要写入的字符数
如果 len 参数的值为负数,则不写入任何字符。
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(String s, int off, int len) method
*
* @author pankaj
*
*/
public class FileWriterWriteStringExample {
public static void main(String[] args) {
String data = "This is FileWriter Example.";
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//inherited method from java.io.OutputStreamWriter
fileWriter.write(data, 8, 10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
写入(char[] cbuf,int off,int len)
此方法将由char[] cbuf
int指定的字符数组的一部分写入 int 。off
len
- cbuf:一个字符数组
- off:开始读取字符的偏移量
- len :要写入的字符数
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(char[] cbuf, int off, int len) method
*
* @author pankaj
*
*/
public class FileWriterWriteCharArray {
public static void main(String[] args) {
char[] data = "This is FileWriter Example.".toCharArray();
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//inherited method from java.io.OutputStreamWriter
fileWriter.write(data, 8, 10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
写入(char[] cbuf)
该方法写入cbuf指定的字符数组。
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(char[] cbuf) method
*
* @author pankaj
*
*/
public class FileWriterWriteCharArrayExample {
public static void main(String[] args) {
char[] data = "This is FileWriter Example.".toCharArray();
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//inherited method from java.io.Writer
fileWriter.write(data);
} catch (Exception e) {
e.printStackTrace();
}
}
}
写入(字符串 str)
该方法将字符串值写入指定的文件中str
。
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(String str) method
*
* @author pankaj
*
*/
public class FileWriterWriteString {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//inherited method from java.io.Writer
fileWriter.write("JournalDev");
} catch (Exception e) {
e.printStackTrace();
}
}
}
追加(字符 c)
此方法将指定的字符附加到此写入器,其中c
是需要附加的 16 位字符。
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter append(char c) method
*
* @author pankaj
*
*/
public class FileWriterAppendCharacter {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//inherited method from java.io.Writer
fileWriter.write("JournalDev");
fileWriter.append('C');
} catch (Exception e) {
e.printStackTrace();
}
}
}
刷新()
此方法刷新流。flush()
调用该方法时,它会立即将数据写入输出文件。
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file with FileWriter flush() method
*
* @author pankaj
*
*/
public class FileWriterFlushExample {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//inherited method from java.io.Writer
fileWriter.write("JournalDev");
//inherited method from java.io.OutputStreamWriter
fileWriter.flush();
fileWriter.write(" Tutorials");
fileWriter.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
关闭()
此方法在关闭流之前刷新流。一旦流已关闭,调用write()
或flush()
方法将导致IOException
抛出。关闭先前关闭的流不会产生任何效果。
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file with FileWriter close() method
*
* @author pankaj
*
*/
public class FileWriterCloseExample {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//inherited method from java.io.Writer
fileWriter.write("JournalDev");
//inherited method from java.io.OutputStreamWriter
fileWriter.close();;
fileWriter.write(" Tutorials");
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出:
java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.Writer.write(Unknown Source)
at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)
FileWriter 与 FileOutputStream
- FileWriter 用于写入字符流,而FileOutputStream用于写入原始字节流。
- FileWriter 处理 16 位字符,而 FileOutputStream 处理 8 位字节。
- FileWriter 可以处理 Unicode 字符串,而 FileOutputStream 将字节写入文件并且不接受字符或字符串,因此需要将其包装起来以
OutputStreamWriter
接受字符串。
另请查看java write file以了解有关如何在 java 中写入文件的更多信息。这就是 Java FileWriter 的全部内容,我希望这里没有遗漏任何重要内容。
您可以从我们的GitHub 存储库下载所有示例代码。
参考:API文档