黑马程序员-流的选用

来源:互联网 发布:java base64 byte数组 编辑:程序博客网 时间:2024/06/16 20:48

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

  流对象最痛苦的就是很多流对象 不知道使用那一个来完成操作,我们需要通过三个明确来确定究竟使用那个对象实现我们的功能
 1.明确源和目的
  源:输入流 InputStream Reader
  目的:输出流 OutputStream Writer
  2.明确操作是不是纯文本
  是:用字符流
  不是:字节流
  3.体系明确后,再明确要使用那个具体的对象
  通过设备来进行区分:
  源设备:内存、硬盘、键盘
  目的设备:内存、硬盘、控制台
  
  eg1,将一个文本文件中的数据存储到另一个文件中,复制文件
  源:因为是源 所以使用读取流 InputStream Reader
  是否为操作文本文件 :是 
  选择使用Reader
  这样体系就明确了 
  接下来明确要使用该体系中的那个对象
  明确设备:硬盘。上的一个文件 
  Reader体系总可以操作文件的对象为FileReader
  
  是否需要提高效率:是  !加入Reader体系中的缓冲区 BufferedReader
  
  FileReader = new FileReader("a.txt");
  BufferedReader = new BufferedReader(fr);
  
  目的:文件 OutputStream Writer
  是否为纯文本: 是 Writer
  设备:硬盘 一个文件
  Writer中可以操作文件的对象为FileWriter
  
  是否需要提高效率:是  !加入Writer体系中的缓冲区 BufferedWriter
  
  FileWriter fw = new FileWriter("b.txt");

  BufferedWriter = new BufferedWriter(fw);

需求:将一个图片文件中的数据存储到另一个文件中 复制文件


  按照以上格式  完成以上三个明确
  1.明确源:文件输入流 用InputStream Reader
是否为纯文本:否 用InputStream
源设备:硬盘 用FileInputStream
是否需要提高效率:是
BufferedInputStream
2.明确目的:文件 输出流 用OutputStream Writer
是否为纯文本:否 用OutputStream
目的设备:硬盘
是否需要提高效率:是

BufferedOutputStream


  

通过三个明确我们可以准确的定位选择究竟使用那个流对象,也就明白了如何操作文件

下面是一个小例子的具体实现:

  题目要求:将键盘录入的数据保存到一个文件中

(1)源:输入流 用InputStream Reader
是否为纯文本 是 用Reader 由于下面用的System.in 返回是一个InputStream 所以这里用InputStreamReader
设备:键盘录入 用System.in
  是否需要提高效率:是
  用BufferedReader
 (2)目的:输出流 用OutputStream Writer
  是否为纯文本: 是 用Writer
  设备:硬盘 用FileWriter
  是否需要提高效率 是
  用BufferedWriter

package com.chuanzhi.io.stream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;public class TransStreamDemo {public static void main(String[] args) {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = null;String line = null;try {bw = new BufferedWriter(new FileWriter("out.java"));while((line = br.readLine()) != null){if("over".equals(line))break;bw.write(line);bw.newLine();}} catch (IOException e) {e.printStackTrace();}finally{if(bw != null){try {bw.close();} catch (IOException e) {e.printStackTrace();}}try {br.close();} catch (IOException e) {e.printStackTrace();}}}}


0 0
原创粉丝点击