Java FileWriter示例

Java FileWriter (Java FileWriter)

  • Java FileWriter class is a part of java.io package.

    Java FileWriter类是java.io软件包的一部分。
  • FileWriter is a sub class of java.io.OutputStreamWriter class.

    FileWriter是java.io.OutputStreamWriter类的子类。
  • FileWriter is meant for writing streams of characters.

    FileWriter用于编写字符流。
  • FileWriter is used to write to character files. Its write() methods allow you to write character(s) or strings to a file.

    FileWriter用于写入字符文件。 它的write()方法允许您将字符或字符串写入文件。
  • FileWriters are usually wrapped by higher-level Writer objects, such as BufferedWriter or PrintWriter, which provide better performance and higher-level, more flexible methods to write data.

    FileWriter通常由更高级别的Writer对象包装,例如BufferedWriterPrintWriter ,它们提供更好的性能以及更高级别,更灵活的数据写入方法。

FileWriter构造函数 (FileWriter Constructors)

  1. FileWriter(File file): Creates a FileWriter object using specified File object. It throws an IOException if the file exists but is a directory rather than a regular file or does not exist but cannot be created, or cannot be opened for any other reason.

    FileWriter(File file) :使用指定的File对象创建一个FileWriter对象。 如果文件存在但它是目录而不是常规文件,或者不存在但无法创建,或者由于任何其他原因而无法打开,则抛出IOException
  2. FileWriter(File file, boolean append): Creates a FileWriter object using specified File object. If the second argument is true, then bytes will be written to the end of the file rather than the beginning. It throws an IOException if the file exists but is a directory rather than a regular file or does not exist but cannot be created, or cannot be opened for any other reason.

    FileWriter(File file, boolean append) :使用指定的File对象创建一个FileWriter对象。 如果第二个参数为true,则字节将被写入文件的末尾而不是开头。 如果文件存在但它是目录而不是常规文件,或者不存在但无法创建,或者由于任何其他原因而无法打开,则抛出IOException
  3. FileWriter(FileDescriptor fd): Creates a FileWriter object associated with specified file descriptor.

    FileWriter(FileDescriptor fd) :创建一个与指定文件描述符关联的FileWriter对象。
  4. FileWriter(String fileName): Creates a FileWriter object using specified fileName. It throws an IOException if the named file exists but is a directory rather than a regular file or does not exist but cannot be created, or cannot be opened for any other reason.

    FileWriter(String fileName) :使用指定的fileName创建一个FileWriter对象。 如果命名文件存在但是目录而不是常规文件,或者不存在但无法创建,或者由于任何其他原因而无法打开,则抛出IOException
  5. FileWriter(String fileName, boolean append): Creates a FileWriter object using specified fileName with a boolean indicating whether or not to append the data written. If the second argument is true, then the data will be written to the end of the file rather than the beginning. It throws an IOException if the named file exists but is a directory rather than a regular file or does not exist but cannot be created, or cannot be opened for any other reason.

    FileWriter(String fileName, boolean append) :使用指定的fileName和一个布尔值创建FileWriter对象,该布尔值指示是否要附加写入的数据。 如果第二个参数为true,则数据将被写入文件的末尾而不是开头。 如果命名文件存在但是目录而不是常规文件,或者不存在但无法创建,或者由于任何其他原因而无法打开,则抛出IOException。

Java FileWriter示例 (Java FileWriter Example)

FileWriter inherits the method of java.io.OutputStreamWriter and java.io.Writer classes.

FileWriter继承了java.io.OutputStreamWriterjava.io.Writer类的java.io.Writer

Let’s have a look at the below methods with examples.

让我们用示例来看看下面的方法。

写(int c) (write(int c))

This method writes a single character specified by int c.

此方法写入一个由int c指定的字符。

package com.journaldev.io.filewriter;

import java.io.FileWriter;
import java.io.IOException;

/**
 * Java write file using FileWriter write method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteIntExample {

	public static void main(String[] args) {
		FileWriter fileWriter = null;
		try {
			fileWriter = new FileWriter("D:/data/file.txt");
			//inherited method from java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if (fileWriter != null) {
					fileWriter.flush();
					fileWriter.close();					
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

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

FileWriter实现了AutoCloseable接口,因此在使用FileWriter类时我们可以尝试使用资源

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write method using try with resource
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteIntTryWithResource {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//inherited method from java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Note: In the above program fileWriter.write(65) will write A into file because the 65 is the decimal value for the character A, hence integer 65 will be converted into character A and same for the other.

注意 :在上面的程序中,因为65是字符A的十进制值,所以fileWriter.write(65)会将A写入文件,因此整数65将被转换为字符A,其他字符也将转换为字符A。

write(String str,int off,int len) (write(String str, int off, int len))

This method writes a portion of String str from int off to int len.

此方法将String str的一部分从int off写入int len

  • str: String to be written

    str:要写入的字符串
  • off: Offset from which to start reading characters

    off:开始读取字符的偏移量
  • len: Number of characters to be written

    len:要写入的字符数

If the value of the len parameter is negative then no characters are written.

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

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(String  s,  int  off,  int  len) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteStringExample {

	public static void main(String[] args) {
		String data = "This is FileWriter Example.";
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//inherited method from java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

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

This method writes a portion of an array of characters specified by char[] cbuf from int off to int len.

此方法将char[] cbuf指定的char[] cbuf数组的一部分从int off写入int len

  • cbuf: A character array

    cbuf:字符数组
  • off: Offset from which to start reading characters

    off:开始读取字符的偏移量
  • len : Number of characters to write

    len:要写入的字符数
package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(char[] cbuf,  int  off,  int  len) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteCharArray {

	public static void main(String[] args) {
		char[] data = "This is FileWriter Example.".toCharArray();
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//inherited method from java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

写(char [] cbuf) (write(char[] cbuf))

This method writes the array of character specified by cbuf.

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

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(char[] cbuf) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteCharArrayExample {

	public static void main(String[] args) {
		char[] data = "This is FileWriter Example.".toCharArray();
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//inherited method from java.io.Writer 
			fileWriter.write(data);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(String str) (write(String str))

This method writes a string value into file specified by str.

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

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(String  str) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteString {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//inherited method from java.io.Writer 
			fileWriter.write("JournalDev");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

追加(字符c) (append(char c))

This method appends the specified character to this writer where c is the 16-bit character to append.

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

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter append(char c) method
 * 
 * @author pankaj
 *
 */
public class FileWriterAppendCharacter {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//inherited method from java.io.Writer 
			fileWriter.write("JournalDev");
			fileWriter.append('C');
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

flush() (flush())

This method flushes the stream. When flush() method is called it immediately writes the data to the output file.

此方法刷新流。 调用flush()方法时,它将立即将数据写入输出文件。

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file with FileWriter flush() method
 * 
 * @author pankaj
 *
 */
public class FileWriterFlushExample {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//inherited method from java.io.Writer 
			fileWriter.write("JournalDev");
			//inherited method from java.io.OutputStreamWriter
			fileWriter.flush();
			
			fileWriter.write(" Tutorials");
			fileWriter.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

关() (close())

This method flush the stream before close it. Once the stream has been closed, invocation of write() or flush() method will cause an IOException to be thrown. Closing a previously closed stream has no effect.

此方法在关闭流之前先对其进行冲洗。 一旦关闭流,调用write()flush()方法将导致引发IOException 。 关闭先前关闭的流无效。

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file with FileWriter close() method
 * 
 * @author pankaj
 *
 */
public class FileWriterCloseExample {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//inherited method from java.io.Writer 
			fileWriter.write("JournalDev");
			//inherited method from java.io.OutputStreamWriter
			fileWriter.close();;
			
			fileWriter.write(" Tutorials");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Output:

输出:

java.io.IOException: Stream closed
	at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
	at sun.nio.cs.StreamEncoder.write(Unknown Source)
	at sun.nio.cs.StreamEncoder.write(Unknown Source)
	at java.io.OutputStreamWriter.write(Unknown Source)
	at java.io.Writer.write(Unknown Source)
	at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)

FileWriter与FileOutputStream (FileWriter vs FileOutputStream)

  • FileWriter is meant for writing streams of characters while FileOutputStream is used for writing streams of raw bytes.

    FileWriter用于写入字符流,而FileOutputStream用于写入原始字节流。
  • FileWriter deal with 16-bit characters while FileOutputStream deals with 8-bit bytes.

    FileWriter处理16位字符,而FileOutputStream处理8位字节。
  • FileWriter can handle Unicode strings while FileOutputStream writes bytes to a file and do not accepts characters or strings hence it needs to wrapped up by OutputStreamWriter to accept strings.

    FileWriter可以处理Unicode字符串,而FileOutputStream将字节写入文件中并且不接受字符或字符串,因此需要由OutputStreamWriter对其进行包装以接受字符串。

Also check java write file for more about how to write file in java.

另请检查Java写入文件以获取有关如何在Java中写入文件的更多信息。

That’s all for Java FileWriter, I hope nothing important got missed here.

Java FileWriter就这些了,我希望这里没有重要的事情。

GitHub Repository. GitHub Repository下载所有示例代码。

Reference: API Doc

参考: API文档

翻译自: https://www.journaldev.com/20891/java-filewriter-example

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值