Java中的FileWriter类
Java .io 包的Java FileWriter类用于将字符形式的数据写入文件。
- 该类继承自 OutputStreamWriter 类,后者又继承自 Writer 类。
- 此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的。要自己指定这些值,请在 FileOutputStream 上构造一个 OutputStreamWriter。
- FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。
- 如果文件不存在,则 FileWriter 创建输出文件。
FileWriter 的层次结构
FileWriter 扩展了 OutputStreamWriter 和 Writer 类。它实现了 Closeable、Flushable、Appendable、AutoCloseable 接口。
FileWriter 的构造函数
1. FileWriter(File file):给定一个File对象构造一个FileWriter对象。如果文件存在但它是一个目录而不是常规文件,或者不存在但无法创建,或者由于任何其他原因无法打开,它会抛出IOException 。
FileWriter fw = new FileWriter(File file);
2. FileWriter(File file, boolean append):给定一个File对象构造一个FileWriter对象。如果第二个参数为真,则字节将写入文件的末尾而不是开头。如果文件存在但它是一个目录而不是常规文件,或者不存在但无法创建,或者由于任何其他原因无法打开,它会抛出IOException 。
FileWriter fw = new FileWriter(File file, boolean append);
3. FileWriter(FileDescriptor fd):构造一个与文件描述符关联的FileWriter对象。
FileWriter fw = new FileWriter(FileDescriptor fd);
4. FileWriter(File file, Charset charset):在给定文件和字符集时构造fileWriter。
FileWriter fw = new FileWriter(File file, Charset charset);
5. FileWriter(File file, Charset charset, boolean append):当给定文件和字符集时构造fileWriter,并用一个布尔值指示是否追加写入的数据。
FileWriter fw = new FileWriter(File file, Charset charset, boolean append);
6. FileWriter(String fileName):构造一个给定文件名的 FileWriter 对象。
FileWriter fw = new FileWriter(String fileName);
7. FileWriter(String fileName, Boolean append):构造一个给定文件名的 FileWriter 对象,布尔值指示是否附加写入的数据。
FileWriter fw = new FileWriter(String fileName, Boolean append);
8. FileWriter(String fileName, Charset charset):当给定文件名和字符集时构造一个FileWriter。
FileWriter fw = new FileWriter(String fileName, Charset charset);
9. FileWriter(String fileName, Charset charset, boolean append):当给定文件名和字符集以及指示是否追加数据的布尔变量时构造一个fileWriter。
FileWriter fw = new FileWriter(String fileName, Charset charset, boolean append);
宣言
public class FileWriter extends OutputStreamWriter
例子
Java
// Java program to create a text File using FileWriter
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
class GFG {
public static void main(String[] args)
throws IOException
{
// initialize a string
String str = "ABC";
try {
// attach a file to FileWriter
FileWriter fw
= new FileWriter("D:/data/file.txt");
// read each character from string and write
// into FileWriter
for (int i = 0; i < str.length(); i++)
fw.write(str.charAt(i));
System.out.println("Successfully written");
// close the file
fw.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
Java
// Java program to write text to file
import java.io.FileWriter;
public class GFG {
public static void main(String args[])
{
String data = "Welcome to gfg";
try {
// Creates a FileWriter
FileWriter output
= new FileWriter("output.txt");
// Writes the string to the file
output.write(data);
// Closes the writer
output.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
Java
// java program to show the usage
// of getEncoding() function
import java.io.FileWriter;
import java.nio.charset.Charset;
class Main {
public static void main(String[] args)
{
String file = "output.txt";
try {
// Creates a FileReader with default encoding
FileWriter o1 = new FileWriter(file);
// Creates a FileReader specifying the encoding
FileWriter o2 = new FileWriter(
file, Charset.forName("UTF11"));
// Returns the character encoding of the reader
System.out.println("Character encoding of o1: "
+ o1.getEncoding());
System.out.println("Character encoding of o2: "
+ o2.getEncoding());
// Closes the reader
o1.close();
o2.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
覆盖与附加文件:
在创建Java FileWriter 时,我们可以决定是要将文件附加到现有文件,还是要覆盖任何现有文件。这可以通过选择合适的构造函数来决定。覆盖任何现有文件的构造函数只需要一个参数,即文件名。
Writer fileWriter = new FileWriter("c:\\data\\output.txt");
附加文件或覆盖文件的构造函数,有两个参数,文件名和一个布尔变量,决定是附加还是覆盖文件
Writer fileWriter = new FileWriter(“c:\\data\\output.txt”, true); // appends to file
Writer fileWriter = new FileWriter(“c:\\data\\output.txt”, false); // overwrites file
基本方法
1.写()
- write(int a):此方法写入由 int a 指定的单个字符。
- write(String str, int pos, int length):此方法从位置pos写入字符串的一部分,直到长度为字符数。
- write(char ch[], int pos, int length):此方法从位置pos到长度字符的位置。
- write(char ch[]):此方法写入由 ch[] 指定的字符数组。
- write(String st):此方法将 'st' 指定的字符串值写入文件。
Java
// Java program to write text to file
import java.io.FileWriter;
public class GFG {
public static void main(String args[])
{
String data = "Welcome to gfg";
try {
// Creates a FileWriter
FileWriter output
= new FileWriter("output.txt");
// Writes the string to the file
output.write(data);
// Closes the writer
output.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
2.getEncoding()
此方法用于获取用于写入数据的编码类型。
Java
// java program to show the usage
// of getEncoding() function
import java.io.FileWriter;
import java.nio.charset.Charset;
class Main {
public static void main(String[] args)
{
String file = "output.txt";
try {
// Creates a FileReader with default encoding
FileWriter o1 = new FileWriter(file);
// Creates a FileReader specifying the encoding
FileWriter o2 = new FileWriter(
file, Charset.forName("UTF11"));
// Returns the character encoding of the reader
System.out.println("Character encoding of o1: "
+ o1.getEncoding());
System.out.println("Character encoding of o2: "
+ o2.getEncoding());
// Closes the reader
o1.close();
o2.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
输出:
The character encoding of output1: Cp1253
The character encoding of output2: UTF11
在上面的示例中,我们创建了 2 个名为 output1 和 output2 的文件编写器。
- output1:不指定字符编码。因此,getEncoding() 方法返回默认字符编码。
- output2:指定字符编码, UTF11 。因此,getEncoding() 方法返回指定的字符编码。
3.关闭()方法:
完成向 FileWriter 写入字符后,我们应该关闭它。这是通过调用 close() 方法完成的。
try {
// Creates a FileReader with default encoding
FileWriter o1 = new FileWriter(file);
// Creates a FileReader specifying the encoding
FileWriter o2 = new FileWriter(file, Charset.forName("UTF11"));
// Returns the character encoding of the reader
System.out.println("Character encoding of o1: " + o1.getEncoding());
System.out.println("Character encoding of o2: " + o2.getEncoding());
// Closes the FileWriter
o1.close();
o2.close();
}
FileWriter 与 FileOutputStream
- FileWriter 写入字符流,而 FileOutputStream 用于写入原始字节流。
- FileWriter 处理 16 位字符,而 FileOutputStream 处理 8 位字节。
- FileWriter 处理 Unicode字符串,而 FileOutputStream 将字节写入文件,它不接受字符或字符串,因此为了接受字符串,它需要用 OutputStreamWriter 包装。
FileWriter 的方法
Method | Description |
---|---|
void write(String text) | It is used to write the string into FileWriter. |
void write(char c) | It is used to write the char into FileWriter. |
void write(char[] c) | It is used to write a char array into FileWriter. |
void flush() | It is used to flushes the data of FileWriter. |
void close() | It is used to close the FileWriter. |
OutputStreamWriter 的方法
Method | Description |
---|---|
flush() | Flushes the stream. |
getEncoding() | Returns the name of the character encoding being used by this stream. |
write(char[] cbuf, int off, int len) | Writes a portion of an array of characters. |
write(int c) | Writes a single character. |
write(String str, int off, int len) | Writes a portion of a string. |
作家的方法
Method | Description |
---|---|
append(char c) | Appends the specified character to this writer. |
append(CharSequence csq) | Appends the specified character sequence to this writer. |
append(CharSequence csq, int start, int end) | Appends a subsequence of the specified character sequence to this writer. |
close() | Closes the stream, flushing it first. |
nullWriter() | Returns a new Writer which discards all characters. |
write(char[] cbuf) | Writes an array of characters. |
write(String str) | Writes a string. |