黑马程序员 ----- Java基础 之 IO 基本规律总结 Day05

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


黑马程序员 -----  Java基础 之 IO 基本规律总结




/*

 *  1 : 
 * 需求:
 * 想把  键盘录入的数据 存储到 一个文件中去!
 *  
 * 分析:
 * 源:  键盘
 * 目的:文件 

 * 规律:
 * 通过三个 明确来完成:
 * 一:明确源和目的!
 *   源:    输入流  InputStream Reader
 *   目的: 输出流  OutputStream Writer
 * 
 * 二:操作的数据是否是 纯文本
 *   是:用字符流!   
 *   不是:字节流!

 * 三: 当体系明确后 在明确 使用 那个具体的对象
 *   通过设备 进行 区分!
 *     设备:
 *     |--源设备:内存,硬盘,键盘
 *     |--目的设备:内存,硬盘,控制台
 * 
 * 
 * 例如:
 * 需求1: 将一个文本文件数据存储到另一个文件中去!
 * 
 * 源:因为是源 所以使用读取流:InputStream  |   Reader
 *    是不是操作文本文件:
 *    是:选择 Reader 
 * 这样 体系就明确了!
 * 
 * 接下来 明确 该体系使用的对象:
 * 明确设备: 硬盘,上的一个文件!
 * Reader 体系中 可以操作文件的对象: FileReader 
 *  
 *  FileReader fr = new fileReader();
 * 是否提高效率? 
 *  BufferedReaer bufr = new BufferedReader(fr);
 *
 *
 * 目的:OutputStream  | Writer
 * 目的 是否是 纯文本?
 * 是: Writer
 * 设备: 硬盘 文件
 * Writer 体系中 可以操作文件的对象: FileWriter
 * 
 * FileWriter fw = new FileWriter();
 * 是否 提高效率?
 * BufferedWriter bufw = new BufferedWriter(fw);
 * 
 * ------------------------------------------
 * 
 * 2 需求 (其实 就是一个键盘记录的工具!)
 *   将键盘录入的数据保存到 文件中!
 *    
 *   源:InputStream Reader
 *   是不是纯文本? 是 Reader
 *    
 *   设备: 键盘 对应的对象 是 System.in
 *   不是选择了Reader ? System.in 对应的不是字节流吗?
 *   为了操作键盘的文本数据方便。为了 字符流 按照 字符串 操作最方便的!
 *   所以,既然明确了Reader,那么就将 System.in转换成字符流!
 *   用到了Reader 体系中的转换流!InputStreamReader
 *    
 *   InputStreamReader inr = new InputStreamReader(System.in);
 *    
 *   缓冲区技术:
 *   BufferedReader bufr = new BufferedReader(inr);
 *    
 *    
 *   --------------------------------
 *    
 *   1 目的: OuputStream     Writer
 *    
 *   2 是否是纯文本?  
 *   是: writer
 *    
 *   3 设备: 硬盘 文件!
 *   使用  FileWriter
 *   FileWriter fw = new FileWriter("c.txt");
 *    
 *   为了 提高效率,使用 缓冲区!
 *   BufferWriter bufw = new BufferedWriter(fw);
 *    
 *    
 *   -----------------------------------
 *    
 *   扩展: 想要把 录入的数据 按照指定的编码表(UTF-8),将数据存到文件中!
 *    
 *   1 目的: OuputStream  |    Writer
 *    
 *   2 是否是纯文本?  
 *   是: writer
 *    
 *   3 设备: 硬盘 文件!
 *   使用  FileWriter( 使用默认的编码表 GBK!)


 *    
 *   但是存储时,需要加入指定的编码表!指定的编码表 只有转换流 可以指定!
 *   所以,要使用的对象是OutputStreamWriter.
 *   而 该转换流 对象 要接受一个 字节输出流! 而且 还可以 操作文件的 输出流! FileOutputStream
 *    
 *   FileOutputStream fos = new FileOutputStream("c.txt");
 *   
 *  OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");  
 * 
 * 缓冲 机制:
 *   BufferedWriter bufw = new BufferedWriter(osw);

 * 
 * ********
 * 注意: 转换流 什么时候使用?
 *   字符和字节之间的桥梁,通常涉及到字符编码转换时,
 * 需要用到转换流!

 * 
 * 
 * 
 * 
 * */


下面是代码:
import java.io.*;

public class TransStreamDemo2 {

  /**
  * @param args
  */
  public static void main(String[] args) throws IOException{
    // TODO Auto-generated method stub

//    键盘录入的最常见写法!
//    1 源
    BufferedReader bufr =
        new BufferedReader(new InputStreamReader(System.in));
    
//    2 目的
    BufferedWriter bufw =
        new BufferedWriter(new OutputStreamWriter(new FileOutputStream("lvoeme2.txt"),"UTF-8"));
    
//    3 操作
    String line = null;
    
    while((line= bufr.readLine())!= null)
    {
      if("over".equals(line))
        break;
      
      bufw.write(line);
      bufw.newLine();
      bufw.flush();
      
    }
    
    bufr.close();
    bufw.close();
  }

}




---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值