Java FileWriter 示例

Java 文件编辑器

  • Java FileWriter 类是「java.io」包的一部分
  • FileWriter 是「java.io.OutputStreamWriter」类的一类子类
  • FileWriter 是用来写字符的流
  • FileWriter 用于写字符文件。它的 `write'() 方法允许你写字符(或字符串)或字符串到一个文件
  • FileWriters 通常由更高级别的 Writer 对象包装,如 BufferedWriterPrintWriter,提供更好的性能和更高级别的更灵活的方法来写数据( _

Java FileWriter

檔案設計師

  1. FileWriter(文件)':使用指定的[文件](/community/tutors/java-file-class-java-io-file)对象创建FileWriter'对象。 如果文件存在,但是一个目录而不是一个正则文件,或者不存在,但无法创建,或者由于任何其他原因无法打开,则它会扔出一个IOException。 使用指定的File对象创建FileWriter对象。 如果第二个参数是真实的,那么字节会被写到文件的结尾而不是开始. 它扔出 **IOException ** 如果文件存在但是一个目录而不是一个正则文件,或者不存在但无法创建,或者由于任何其他原因无法打开.
  2. `FileWriter (FileDescriptionor fd)' : 创建与指定文件描述符相关的文件Writer对象.
  3. FileWriter (String file)' : 使用指定文件创建 FileWriter 对象Name 如果所命名的文件存在但是一个目录而不是一个正则文件,或者不存在但无法创建,或者由于任何其他原因无法打开,则它会扔出一个"IOException". (- )5。 FileWriter( 字符串文件Name,布尔附件)' : 使用指定文件创建 FileWriter 对象Name 有布尔表示是否** 添加** 写入的数据。 如果第二个参数是真实的,那么数据会被写到文件的结尾而不是开始. 如果所命名的文件存在但是一个目录而不是一个正则文件,或者不存在但无法创建,或者由于任何其他原因无法打开,则它会扔出一个 IOExcuseion. (_) (英语)

Java 文件编辑器 示例

FileWriter 继承了java.io.OutputStreamWriterjava.io.Writer类的方法,让我们以示例来看下面的方法。

写作(C)

此方法编写一个单个字符,指定为 int c

 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4import java.io.IOException;
 5
 6/**
 7 * Java write file using FileWriter write method
 8 * 
 9 * @author pankaj
10 *
11 */
12public class FileWriterWriteIntExample {
13
14    public static void main(String[] args) {
15    	FileWriter fileWriter = null;
16    	try {
17    		fileWriter = new FileWriter("D:/data/file.txt");
18    		//inherited method from java.io.OutputStreamWriter 
19    		fileWriter.write(65);
20    		fileWriter.write(66);
21    		fileWriter.write(67);
22    	} catch (Exception e) {
23    		e.printStackTrace();
24    	}finally {
25    		try {
26    			if (fileWriter != null) {
27    				fileWriter.flush();
28    				fileWriter.close();					
29    			}
30    		} catch (IOException e) {
31    			e.printStackTrace();
32    		}
33    	}
34    }
35}

Java FileWriter Example FileWriter implements AutoCloseable interface, hence we can use try with resources while using FileWriter class.

 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4
 5/**
 6 * Java write file using FileWriter write method using try with resource
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class FileWriterWriteIntTryWithResource {
12
13    public static void main(String[] args) {
14    	try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
15    		//inherited method from java.io.OutputStreamWriter 
16    		fileWriter.write(65);
17    		fileWriter.write(66);
18    		fileWriter.write(67);
19    	} catch (Exception e) {
20    		e.printStackTrace();
21    	}
22    }
23}

** 注意**:在上面的程序中,fileWriter.write(65) 会将 A 写入文件中,因为 65 是字符 A 的十进制值,因此整数 65 将转换为字符 A 和相同的字符。

写(String str, int off, int len)

此方法写出一部分字符串str从intoff到intlen

  • str: 要写字符串
  • off: 要开始读字符串
  • len: 要写字符串的数量

如果 len 参数的值是负的,则不会写任何字符。

 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4
 5/**
 6 * Java write file using FileWriter write(String s, int off, int len) method
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class FileWriterWriteStringExample {
12
13    public static void main(String[] args) {
14    	String data = "This is FileWriter Example.";
15    	try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
16    		//inherited method from java.io.OutputStreamWriter 
17    		fileWriter.write(data, 8, 10);
18    	} catch (Exception e) {
19    		e.printStackTrace();
20    	}
21    }
22}

FileWriter write example

写(char[] cbuf, int off, int len)

该方法写入了由char[] cbuf指定的字符组的一部分,从intoff到intlen

  • cbuf: 字符数组
  • 关闭: 取代以开始读字符
  • len : 写字符数
 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4
 5/**
 6 * Java write file using FileWriter write(char[] cbuf, int off, int len) method
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class FileWriterWriteCharArray {
12
13    public static void main(String[] args) {
14    	char[] data = "This is FileWriter Example.".toCharArray();
15    	try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
16    		//inherited method from java.io.OutputStreamWriter 
17    		fileWriter.write(data, 8, 10);
18    	} catch (Exception e) {
19    		e.printStackTrace();
20    	}
21    }
22}

此方法写入 cbuf 指定的字符数组。

 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4
 5/**
 6 * Java write file using FileWriter write(char[] cbuf) method
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class FileWriterWriteCharArrayExample {
12
13    public static void main(String[] args) {
14    	char[] data = "This is FileWriter Example.".toCharArray();
15    	try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
16    		//inherited method from java.io.Writer 
17    		fileWriter.write(data);
18    	} catch (Exception e) {
19    		e.printStackTrace();
20    	}
21    }
22}

字符串(String)

此方法将一个字符串值写入由 str 指定的文件中。

 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4
 5/**
 6 * Java write file using FileWriter write(String str) method
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class FileWriterWriteString {
12
13    public static void main(String[] args) {
14    	try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
15    		//inherited method from java.io.Writer 
16    		fileWriter.write("JournalDev");
17    	} catch (Exception e) {
18    		e.printStackTrace();
19    	}
20    }
21}

附件(C)

此方法将指定的字符附加到该编写器中,其中c是要附加的 16 位字符。

 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4
 5/**
 6 * Java write file using FileWriter append(char c) method
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class FileWriterAppendCharacter {
12
13    public static void main(String[] args) {
14    	try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
15    		//inherited method from java.io.Writer 
16    		fileWriter.write("JournalDev");
17    		fileWriter.append('C');
18    	} catch (Exception e) {
19    		e.printStackTrace();
20    	}
21    }
22}

( )

当被称为flush()方法时,它会立即将数据写入输出文件中。

 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4
 5/**
 6 * Java write file with FileWriter flush() method
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class FileWriterFlushExample {
12
13    public static void main(String[] args) {
14    	try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
15    		//inherited method from java.io.Writer 
16    		fileWriter.write("JournalDev");
17    		//inherited method from java.io.OutputStreamWriter
18    		fileWriter.flush();
19    		
20    		fileWriter.write(" Tutorials");
21    		fileWriter.flush();
22    	} catch (Exception e) {
23    		e.printStackTrace();
24    	}
25    }
26}

接近( )

此方法在关闭之前会清除流量。一旦流量已关闭,请求write()flush()方法会导致IOException被扔掉。

 1package com.journaldev.io.filewriter;
 2
 3import java.io.FileWriter;
 4
 5/**
 6 * Java write file with FileWriter close() method
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class FileWriterCloseExample {
12
13    public static void main(String[] args) {
14    	try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
15    		//inherited method from java.io.Writer 
16    		fileWriter.write("JournalDev");
17    		//inherited method from java.io.OutputStreamWriter
18    		fileWriter.close();;
19    		
20    		fileWriter.write(" Tutorials");
21    	} catch (Exception e) {
22    		e.printStackTrace();
23    	}
24    }
25}

输出:

1java.io.IOException: Stream closed
2    at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
3    at sun.nio.cs.StreamEncoder.write(Unknown Source)
4    at sun.nio.cs.StreamEncoder.write(Unknown Source)
5    at java.io.OutputStreamWriter.write(Unknown Source)
6    at java.io.Writer.write(Unknown Source)
7    at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)

使用 FileWriter 和 FileOutputStream

  • FileWriter 用于编写字符流,而 FileOutputStream用于编写原始字节流
  • FileWriter 处理 16 位字符,而 FileOutputStream 处理 8 位字节
  • FileWriter 可以处理 Unicode 字符串,而 FileOutputStream 会编写字符串到文件中,并且不接受字符或字符串,因此它需要被OutputStreamWriter包装以接受字符串

也检查 [java 写文件]( / 社区 / 教程 / java 写到文件) 有关如何写在 java 中的文件的更多信息. 这就是 Java FileWriter 的全部,我希望这里没有什么重要的错过。

您可以从我们的 GitHub 存储库下载所有示例代码。

引用: API Doc

Published At
Categories with 技术
Tagged with
comments powered by Disqus