黑马程序员_IO流(3)流总结

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

IO操作涉及到的类较多,不过规律性也较强,通常可以通过三步实现IO操作。

1,明确源和目的。

源也就是输入流包括InputStream Reader 和他们的子类

目的也就是输出流包括OutputStream Writer和他们的子类。

2,判断操作的数据是否是纯文本(txt文件等)是:字符流。不是:字节流。

3,当体系明确后,在明确要使用哪个具体的对象。通过设备来进行区分:源设备:内存,硬盘,键盘等。目的设备:内存,硬盘,控制台等。

举例,将一个文本文件中数据存储到另一个文件中。第一步明确目的和源。复制文件。源:因为是源,所以使用读取流InputStream或 Reader。2.判断是否是纯文本文件。明显是文本文件,这时就可以选择Reader这样体系就明确了。接下来明确要使用该体系中的哪个对象。

明确设备:硬盘。上一个文件。Reader体系中可以操作文件的对象是 FileReader是否需要提高效率:但为了提高读写效率。

加入Reader体系中缓冲区BufferedReader中。 代码为:FileReader fr = new FileReader("a.txt");BufferedReader bufr = new BufferedReader(fr);

这里的BufferedReader可以理解为在FileReader的小管道外套上BufferedReader,这样因为有缓冲区,所以可以调用readLine()方法,直接读取一行数据。

同样目的设备也可以这样分析。

字符流的传输效率比字节流的高,例如在控制台输入英文时,可以按照字符的读取来读取输入,如果能用readline()方法来读取数据效率就更高了,这时就需要用到转换流将,将字节转换成字符流。由于字符流使用Unicode字符集,支持很多个国家的编码,因此若流要跨越多种平台传输,应使用字符流。
下面是用字符流接受控制台输入的实现。

class  streamToReader{
 public static void main(String[] args) throws IOException
 {
  System.setIn(new FileInputStream("E:\\class\\copy.java"));
  System.setOut(new PrintStream("abc.txt"));
  BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  
  BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
  String line = null;
  while((line=bufr.readLine())!=null)
  {
   if("over".equals(line))
    break;
   bufw.write(line.toUpperCase());
   bufw.newLine();
   bufw.flush();
  }
  bufr.close();
 }
}

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值