黑马程序员—java技术blog—第六篇:IO流的总结

来源:互联网 发布:石家庄淘宝代运营 编辑:程序博客网 时间:2024/06/07 14:56

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

一、四个明确

 

1,明确体系:

数据源:InputStream Reader

数据汇:OutputStreamWriter

2,明确数据:因为数据分两种:字节,字符。

数据源:是否是纯文本数据呢?

是:Reader

否:InputStream

数据汇:

是:Writer

否:OutputStream

到这里就可以明确具体要使用哪一个体系了。剩下的就是要明确使用这个体系中的哪个对象。

 

3,明确设备:

数据源:

键盘:System.in

硬盘:FileXXX

内存:数组。

网络:socket  socket.getInputStream();

数据汇:

控制台:System.out

硬盘:FileXXX

内存:数组

网络:socket socket.getOutputStream();

4,明确额外功能:

1,需要转换?是,使用转换流。InputStreamReader OutputStreamWriter

2,需要高效?是,使用缓冲区。Buffered

3,需要其他?

 

--------------------

例:

1,复制一个文本文件。

 

1,明确体系:

源:InputStream Reader

目的:OutputStream Writer

2,明确数据:

源:是纯文本吗?是 Reader

目的;是纯文本吗?是 Writer

3,明确设备:

源:硬盘上的一个文件。 FileReader

目的:硬盘上的一个文件。FileWriter

FileReader fr = new FileReader("a.txt");

FileWriter fw = new FileWriter("b.txt");

4,需要额外功能吗?

需要,高效,使用buffer

BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));

BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));

2,读取键盘录入,将数据存储到一个文件中。

1,明确体系:

源:InputStream Reader

目的:OutputStream Writer

2,明确数据:

源:是纯文本吗?是 Reader

目的;是纯文本吗?是 Writer

3,明确设备:

源:键盘,System.in

目的:硬盘,FileWriter

InputStream in = System.in;

FileWriter fw = new FileWriter("a.txt");

4,需要额外功能吗?

需要,因为源明确的体系时Reader。可是源的设备是System.in

所以为了方便于操作文本数据,将源转成字符流。

            需要转换流(InputStreamReader)。                 

            InputStreamReader isr = new InputStreamReader(System.in);

FileWriter fw  = new FileWriter("a.txt");

需要高效不?需要。Buffer

        BufferedRead  bufr = new BufferedRead(new InputStreamRead(System.in));

  BufferedWriter bufw = new BufferedWriter(new FileWriter("a.txt"));

 

3,读取一个文本文件,将数据展现在控制台上。

            1,明确体系:

源:InputStream Reader

目的:OutputStream Writer

2,明确数据:

源:是纯文本吗?是 Reader

目的;是纯文本吗?是 Writer

3,明确设备:

源:硬盘文件,FileReader

目的:控制台:System.out

FileReader fr = new FileReader("a.txt");

OutputStream out = System.out;

4,需要额外功能?

因为源是文本数据,确定是Writer体系。所以为了方便操作字符数据,

需要使用字符流,但是目的又是一个字节输出流。

需要一个转换流,OutputStreamWriter

FileReader fr = new FileReader("a.txt");

OutputStreamWriter osw = new OutputStreamWriter(System.out);

需要高效吗?需要。

  BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));

  BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

 

 

4,读取键盘录入,将数据展现在控制台上。

1,明确体系:

源:InputStream Reader

目的:OutputStream Writer

2,明确数据:

源:是纯文本吗?是 Reader

目的;是纯文本吗?是 Writer

3,明确设备:

源:键盘:System.in

目的:控制台:System.out

InputStream in = System.in;

OutputStream out = System.out;

4,需要额外功能吗?

因为处理的数据是文本数据,同时确定是字符流体系。

为方便操作字符数据的可以将源和目的都转成字符流。使用转换流。

           为了提高效率,使用Buffer

BufferedReader bufr  =new BufferedReader(new InputStreamReader(Systme.in));

BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

5,读取一个文本文件,将文件按照指定的编码表UTF-8进行存储,保存到另一个文件中。

1,明确体系:

源:InputStream Reader

目的:OutputStream Writer

2,明确数据:

源:是纯文本吗?是 Reader

目的;是纯文本吗?是 Writer

3,明确设备:

源:硬盘:FileReader.

目的:硬盘:FileWriter

FileReader fr = new FileReader("a.txt");

FileWriter fw = new FileWriter("b.txt");

4,额外功能:

注意:目的中虽然是一个文件,但是需要指定编码表。

而直接操作文本文件的FileWriter本身内置的是本地默认码表。     

                  无法明确具体指定码表。

这时就需要转换功能。OutputStreamWriter,而这个转换流需要接 

                  受一个字节输出流,而且对应的目的是一个文件。这时就使用

                  字节输出流中的操作文件的流对象。FileOutputStream.

  FileReader fr = new FileReader("a.txt");

                  OutputStreamWriter osw = new OutputStreamWriter

                      (new FileOutputStream("b.txt"),"UTF-8");

需要高效吗?

BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));

BufferedWriter bufw = new BufferedWriter

                (new OutputStreamWriter(new FileOutputStream("b.txt"),"UTF-8"));

----- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

详细请查看:<a href="http://edu.csdn.net/heima" target="blank">http://edu.csdn.net/heima</a>

0 0