小弟写了一个简单的bufferedwrite的代码如下
public class Test1 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
FileReader fr=new FileReader("D:/s.txt");
BufferedReader br=new BufferedReader(fr);
FileWriter fw=new FileWriter("D:/s1.txt");
BufferedWriter bw=new BufferedWriter(fw);
String s=br.readLine();
while(s!=null)
{
bw.write(s);
System.out.println(s);
bw.newLine();
s=br.readLine();
}
br.close();
bw.close();
}
catch(Exception e)
{

e.printStackTrace();
} }}
刚开始忘记关了bufferedwrite流 ,为何不能将s.txt中的文件写到s1.txt中

解决方案 »

  1.   

    比如bw.close()相当一个事务的提交。只有关闭了,它知道你要写的东西结束了。
      

  2.   

    因为数据都写在了缓冲区里 并没有写到你指定的文件中
    所以必须调用close()方法 你仔细看 方法说明 
    方法说明是 先清空缓冲区在关闭流
    你也可以使用flush()方法来清空缓冲区 也能实现你想要的效果
    不过用完 必须要close() 来关闭底层的windows资源
      

  3.   

    1楼贴代码试验当然能通过 因为楼住已经写了close()
    2楼没写close()或者fluse() 绝对写不进去
    3楼解释非常不对 close()的目的是关闭windows的底层资源 当然close()在执行的时候其实先执行了flush()来清空缓冲区,就算不写close() 直接调用flush()也可达到清空的目的,一样可以写入文件