當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java FileWriter用法及代碼示例


Javajava.io包的FileWriter類用於將字符形式的數據寫入文件。 Java FileWriter 類用於將character-oriented 數據寫入文件。它是一個character-oriented類,用於java中的文件處理。

  • 該類繼承自 OutputStreamWriter class,而 OutputStreamWriter class 又繼承自 Writer 類。
  • 此類的構造函數假定默認字符編碼和默認byte-buffer 大小是可接受的。要自己指定這些值,請在 FileOutputStream 上構造 OutputStreamWriter 。
  • FileWriter 用於寫入字符流。要寫入原始字節流,請考慮使用 FileOutputStream。
  • FileWriter 創建輸出文件(如果尚不存在)。

Java FileWriter 類的層次結構

Hierarchy of Java FileWriter Class

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(); 
        } 
    } 
}

輸出:

writing ABC string to a file

覆蓋與追加文件

創建 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) 寫入一個字符串。


相關用法


注:本文由純淨天空篩選整理自goelshubhangi3118大神的英文原創作品 FileWriter Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。