java--进步学习IO

import java.io.*;
public class Demo1 {
    public static  void main(String []args) throws Exception{
        
        File fileOut = new File("Out.txt");
        File fileOut2 = new File("In.txt");
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        
        //
        FileWriter fileWrite = new FileWriter(fileOut);//将从控制台读取的数据存入该文件
        FileWriter fileWrite2 = new FileWriter(fileOut2);//将从第一个文件中读取的数据保存至第二个文件
        
        //设置文件流的处理流
        
        BufferedWriter bfOut = new BufferedWriter(fileWrite);
        BufferedWriter bfOut2 = new BufferedWriter(fileWrite2);
        
//        从控制台读入数据 写入第一个文件
        String string = bf.readLine();
        bfOut.write(string);
        bfOut.newLine();
        bfOut.close();
        File fileIn = new File("Out.txt");
        FileReader fileRead = new FileReader(fileIn);//从第一个文件中读取数据
        BufferedReader bfIn = new BufferedReader(fileRead);
        
//        从第一个文件中读取数据,写入另外一个文件,同时展现在控制台中
        String string2 = bfIn.readLine();//读取
        bfOut2.write(string2);//写入
        System.out.println(string2);
        
//        fileRead.close();
//        fileWrite.close();
        bfIn.close();
        bfOut.close();
        bfOut2.close();

        
    }
}

废了好大的劲终于搞明白了,刚开始的时候,处理文件,同时定义两个流对象(一个打开一个关闭)指向同一个文件,这样就会导致同一个文件同时要被写入和读出,这样就会出现错误,类似于线程的同步性问题。

另外,文件流在添加了处理流的套接的时候,可以只关闭处理流。

文件的处理必须要关闭!!!flush()操作是很有帮助的。

原文地址:https://www.cnblogs.com/plxx/p/3418895.html