Java学习笔记——通过缓冲流写文件

本文详细介绍了在Java中使用BufferedWriter进行文件写入时的常见问题,强调了刷新流(使用flush()方法)的重要性,以确保内部缓冲区中的数据能够成功写入指定文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中利用bufferedwriter来写文件,遇到的主要问题是程序都正确但一直没有写入文件中。通过查资料才发现,使用bufferedwriter一开始文件都是存储于缓冲区的,要使用flush函数来刷新流或者关闭流才能真正使内部缓冲区的数据写入到指定文件中。具体实现代码如下:

import java.util.*;
import java.nio.*;
import java.nio.file.*;
import java.io.*;
import java.nio.charset.*;
import java.lang.AutoCloseable;
public class WriteFile {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成方法存根

		String[] sayings = {
				"Wife:How would you describe me?",
				"Husband: ABCDEFGHIJK.",
				"Wife: What does that mean?",
				"Husband: Adorable, beautiful, cute, delightful, elegant, fashionable, gorgeous, and hot.",
				"Wife: Aw, thank you, but what about IJK?",
				"Husband: I'm just kidding!" };
		Path file = Paths.get(System.getProperty("user.home")).resolve("sss")
				.resolve("Sayings.txt");
		try {
			Files.createDirectories(file.getParent());

		} catch (IOException e) {
			System.err.println("Error creating directory: " + file.getParent());
			e.printStackTrace();// 在命令行打印异常信息在程序中出错的位置及原因
			System.exit(1);

		}
		try{
			BufferedWriter fileOut=Files.newBufferedWriter(file, Charset.forName("UTF-16"));
			
			for(int i=0;i<sayings.length;++i)
			{
				fileOut.write(sayings[i],0,sayings[i].length());
				fileOut.newLine();
				
			}
			fileOut.flush();//刷新流导致内部缓冲区中所有数据都被写入文件中
			System.out.println("File written.");
		}catch(IOException e)
		{
			System.err.println("Error Writing file: "+file);
			e.printStackTrace();
		}
		
	}
}
实现结果如下:(这个代码是刷新整个文件,而不是在文件内容后面追加内容)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值