IO流的操作规律:

字符流:
  FileReader
  FileWriter
  BufferedReader
  BufferedWriter
  InputStreamReader
 

字节流:
  FileInputStream
  FileOutputStream
  BufferedInputStream
 

1.开发是,用哪个流对象解决问题?
 
  1)明确一:明确源和目的
  
      源:就需要读,则需要输入体系(InputStream、 Reader)。
    目的:就需要写,则需要输出体系(OutputStream、Writer)。
 
  2)明确二:处理的数据是否是纯文本数据
   
      是:就使用字符流。
          源:Reader
 目的:Writer

     否:就是用字节流。
          源:InputStream
 目的:OutputStream
   两个明确都确定后,可以确定需要使用那个体系。
 
  3)明确三:具体是那个设备,目的是为了确定具体的对象
    
   源设备:
          键盘:System.in
   硬盘:操作文件的对象。File开头的流对象
   内存:数组
   网络:Socket
 目的设备:
          硬盘: 操作文件的对象。File开头的流对象
   屏幕(控制台):System.out
   内存:数组
   网络:Socket
2.示例
  需求:对文本文件的复制
  分析:明确1:源和目的
           源:InputStream Reader
  目的:OutputStream Writer
 明确2:是否是纯文本
    是:
     源:Reader
   目的:Writer
 明确3:具体的设备
     源:硬盘
   目的:硬盘
     FileReader fr=new FileReader("demo.txt");
    

       明确4:额外功能
      需要:高效
      BufferedReader bufr=new BufferedReader(new FileReader("demo.txt"))
      BufferedWriter bufw=new BufferedWriter(new FileWriter("demo1.txt"))
       
     

小记:
  键盘录入:
  InputStream in=System.in;
  int ch=in.read();