当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。