java 输入流和输出流 传入相同文件时

本文深入探讨了Java中BufferedReader和BufferedWriter的使用方式,包括它们如何利用缓冲区优化文件读写操作,特别强调了在文件操作时将路径下的文件设置为空文件的情况,并提供了正确的文件读写方法,确保文件路径和名称保持不变。

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

java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

public static void main(String[] args) throws Exception{


1 File file = new File("d:\\test\\20150401_001");
2 File fil1 = new File("d:\\test\\20150401_001");
3 BufferedReader reader = new BufferedReader( new FileReader( file));
4 BufferedWriter writer = new BufferedWriter( new FileWriter( fil1));
StringBuffer buffer = new StringBuffer();
String tmp = reader.readLine();
while( tmp != null ){
buffer.append(tmp.trim() + "\n");
tmp = reader.readLine();
}
System.out.println(buffer.toString());

}

当3,4行代码执行时,第4行代码会把路径下的文件设置为空文件。后面代码while不再进入,打印出来为'';
如果想对一个文件进行操作,输出后文件路径,文件名保持不变,应该如例:

BufferedReader reader = new BufferedReader( new FileReader( new File(fileName)));


StringBuffer buffer = new StringBuffer();

String tmp = reader.readLine();
while( tmp != null ){
buffer.append(tmp.trim() + "\n");
tmp = reader.readLine();
}
BufferedWriter writer = new BufferedWriter( new FileWriter( new File(fileName)));

writer.write( );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值