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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。