Javajava.io包的FileWriter类用于将字符形式的数据写入文件。 Java FileWriter 类用于将character-oriented 数据写入文件。它是一个character-oriented类,用于java中的文件处理。
- 该类继承自 OutputStreamWriter class,而 OutputStreamWriter class 又继承自 Writer 类。
- 此类的构造函数假定默认字符编码和默认byte-buffer 大小是可接受的。要自己指定这些值,请在 FileOutputStream 上构造 OutputStreamWriter 。
- FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。
- FileWriter 创建输出文件(如果尚不存在)。
Java FileWriter 类的层次结构
FileWriter 扩展了 OutputStreamWriter 和 Writer 类。它实现了 Closeable、Flushable、Appendable、AutoCloseable 接口。
Java FileWriter 类声明
public class FileWriter extends OutputStreamWriter
Constructors of FileWriter Class
1. FileWriter(File file):给定一个 File 对象,它构造一个 FileWriter 对象。如果文件存在但是一个目录而不是常规文件,它不存在但无法创建,或者由于任何其他原因无法打开,则会抛出 IOException。
FileWriter fw = new FileWriter(File file);
2. FileWriter(File file, boolean append):它根据给定的 File 对象构造一个 FileWriter 对象。如果第二个参数为 true,则字节将写入文件的末尾而不是开头。如果文件存在但是目录而不是常规文件,或者不存在但无法创建,或者由于任何其他原因无法打开,则会抛出 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):当给定file和charset时构造fileWriter。
FileWriter fw = new FileWriter(File file, Charset charset);
5. FileWriter(File file, Charset charset, boolean append):当给定 file 和 charset 以及一个指示是否附加写入数据的布尔值时,它构造 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);
例子:
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 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
FileWriter类的基本方法
1.Write()
- 写(int a):此方法写入int a 指定的单个字符。
- 写(字符串str,int pos, int长度):此方法从位置写入字符串的一部分pos直到长度字符数。
- 写入(char ch[],int pos,int 长度):此方法从位置写入数组 ch[] 中的字符位置pos直到长度字符数。
- 写(字符ch[]):此方法写入由 ch[] 指定的字符数组。
- 写(字符串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();
}
}
}
输出:
The file output.txt will contain "Welcome to gfg" text.
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。
- 输出1:不指定字符编码。因此,getEncoding() 方法返回默认字符编码。
- 输出2:指定字符编码,UTF11。因此,getEncoding()方法返回指定的字符编码。
3.close()方法:
将字符写入 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类的方法
S. 编号 |
方法 |
说明 |
---|---|---|
1. | 无效写入(字符串文本) | 它用于将字符串写入FileWriter。 |
2. | 无效写入(字符c) | 它用于将字符写入FileWriter。 |
3. | 无效写入(字符[] c) | 它用于将字符数组写入FileWriter。 |
4. | 无效flush() | 它用于刷新FileWriter的数据。 |
5. | 无效close() | 它用于关闭FileWriter。 |
OutputStreamWriter类的方法
S. 编号 | 方法 | 说明 |
---|---|---|
1. | flush() | 冲洗流。 |
2. | getEncoding() | 返回该流所使用的字符编码的名称。 |
3. | 写入(char[] cbuf,int 关闭,int len) | 写入字符数组的一部分。 |
4. | write(int c) | 写入单个字符。 |
5. | write(String str, int off, int len) | 写入字符串的一部分。 |
Writer类的方法
S. 编号 |
方法 |
说明 |
---|---|---|
1. | Writer append(char) | 将指定的字符附加到该编写器。 |
2. | append(CharSequence csq) | 将指定的字符序列附加到该编写器。 |
3. | append(CharSequence csq, int start, int end) | 将指定字符序列的子序列附加到此编写器。 |
4. | Writer close() | 关闭流,首先刷新它。 |
5. | nullWriter() | 返回一个新的 Writer,它会丢弃所有字符。 |
6. | Writer write(char[]) | 写入字符数组。 |
7. | Writer write(String) | 写入一个字符串。 |
相关用法
- Java FileDescriptor sync()用法及代码示例
- Java FileDescriptor valid()用法及代码示例
- Java FileInputStream available()用法及代码示例
- Java FileInputStream close()用法及代码示例
- Java FileInputStream finalize()用法及代码示例
- Java FileInputStream getChannel()用法及代码示例
- Java FileInputStream getFD()用法及代码示例
- Java FileInputStream skip()用法及代码示例
- Java FileOutputStream close()用法及代码示例
- Java FileOutputStream finalize()用法及代码示例
- Java FileOutputStream getChannel()用法及代码示例
- Java FileOutputStream getFD()用法及代码示例
- Java FilePermission equals()用法及代码示例
- Java FilePermission getActions()用法及代码示例
- Java FilePermission hashCode()用法及代码示例
- Java FilePermission implies()用法及代码示例
- Java FilePermission newPermissionCollection()用法及代码示例
- Java File canExecute()用法及代码示例
- Java File canRead()用法及代码示例
- Java File canWrite()用法及代码示例
- Java File createNewFile()用法及代码示例
- Java File createTempFile()用法及代码示例
- Java File delete()用法及代码示例
- Java File exists()用法及代码示例
- Java File getAbsoluteFile()用法及代码示例
注:本文由纯净天空筛选整理自goelshubhangi3118大神的英文原创作品 FileWriter Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。