标题: 学习毕老师视频IO流中遇到的一个问题 [打印本页] 作者: 张青峰 时间: 2012-2-4 11:04 标题: 学习毕老师视频IO流中遇到的一个问题 通过学习毕老师的视频(19天的通过缓冲区复制文本),自己结合前面学习的IO流知识写了一个程序,本来想实现了这样的一个功能:在被复制的文本后面加入其它内容,但是运行结果却是在文本的前面加入了内容?这是为什么?
import java.io.*;
public class CopyTextByBuff {
public static void main(String[] args ) throws IOException{
BufferedReader bufr = null;
BufferedWriter bufwr = null;
FileReader a = new FileReader("c:\\123.txt");
bufr = new BufferedReader( a );
FileWriter b = new FileWriter("c:\\1234.txt",true);
b.write("你好");
bufwr = new BufferedWriter(/*new FileWriter("c:\\1234.txt")*/b);
String line = null;
while((line = bufr.readLine())!=null){
bufwr.write(line);
bufwr.newLine();
bufwr.flush();
}
bufwr.close();
}
}作者: 最初的理想 时间: 2012-2-4 11:42
你写入的内容在复制内容之前当然是这样了。复制内容和写入内容顺序调换下。作者: 梅雄新 时间: 2012-2-4 11:44
楼主,从你想表达的意思理解,你是想将c:\\123.txt 的内容 复制到c:\\1234.txt里并在后面加上“你好”
FileWriter b = new FileWriter("c:\\1234.txt",true);
b.write("你好");
但在你的代码里,你先建立了对文件1234.txt的一个节点流,并向节点流里写入了“你好”,此时“你好”追加到了1234.txt的末尾
楼主再对这个节点流创建缓冲流并未对“你好”起到作用
bufwr = new BufferedWriter(/*new FileWriter("c:\\1234.txt")*/b);
String line = null;
下面是“你好”已经写到1234.txt后,楼主才开始把123.txt里的内容逐行写入到1234.txt,所以得不到楼主想要的结果
while((line = bufr.readLine())!=null)
{
bufwr.write(line);
bufwr.newLine();
bufwr.flush();
}
要想得到理想的结果可以这样修改
FileWriter b = new FileWriter("c:\\1234.txt",true);
bufwr = new BufferedWriter(/*new FileWriter("c:\\1234.txt")*/b);
String line = null;
while((line = bufr.readLine())!=null){
bufwr.write(line);
bufwr.newLine();