Java流操作之转换流

流的操作规律:

1.明确流和目的。

  数据源(源头):就是需要读取,可以使用两个体系:InputStream、Reader

  数据汇(目的地):就是需要写入,可以使用两个体系:OutputStream.Writer

2.操作的数据是否是纯文本数据?

  如果是(读取/写入的是字符):

             数据源:Reader

             数据汇:Writer

  如果不是(读取/写入的是字节):

             数据源:InputStream         

             数据汇:OutputStream

3.确定了一个体系,明确操作的数据设备

  数据源对应的设备,如硬盘(File)、内存(数组)、键盘(System.in)、网络(Socket流)

  数据汇对应的设备,如硬盘(File)、内存(数组)、键盘(System.out)、网络(Socket流)

4.需要在基本操作上附加其他功能?比如需要缓冲去提高数据的读写效率,则可以使用装饰类,比如(BufferedReader/BufferedWriter)

凡是操作设备上的文本数据,涉及编码转换,必须使用转换流

package IODemo;

import java.io.BufferedReader;

复制代码
复制代码
 1 package IODemo;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 import java.io.InputStreamReader;
 9 import java.io.OutputStreamWriter;
10 
11 public class InputStreamReaderDemo {
12 
13  /**
14   * @param args
15   * @throws IOException
16   */
17 
18  public static void main(String[] args) throws IOException {
19   /*
20    * 完成文本文件的三个需求 (明确源和目的)
21    * 1.输入控制台的内容输出到文本文件中 
22    * 2.将文本文件的内容输出到控制台
23    * 3.将一个文件的内容复制到另一个文件中
24    */
25   //第三问
26   BufferedReader bufr = new BufferedReader(new InputStreamReader(
27     new FileInputStream("Demo.txt")));
28   BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(
29     new FileOutputStream("Demo3.txt")));
30   // 第二问
31   /*
32    * BufferedReader bufr = new BufferedReader(new InputStreamReader( new
33    * FileInputStream("Demo2.txt"))); BufferedWriter bufw = new
34    * BufferedWriter(new OutputStreamWriter( System.out));
35    */
36   // 第一问
37   /*
38    * BufferedReader bufr = new BufferedReader(new InputStreamReader(
39    * System.in)); BufferedWriter bufw = new BufferedWriter(new
40    * OutputStreamWriter( new FileOutputStream("Demo2.txt")));
41    */
42   // BufferedReader bufr=new BufferedReader(new
43   // InputStreamReader(new FileInputStream("Demo.txt")));
44 
45   /*
46    * InputStream in = System.in; int ch1=in.read();
47    * System.out.println(ch1); int ch2=in.read(); System.out.println(ch2);
48    */
49   /*
50    * InputStreamReader isr = new InputStreamReader(in); BufferedReader
51    * bufr = new BufferedReader(isr);// 装饰类在基本功能上进行扩展
52    */
53   String line = null;
54   while ((line = bufr.readLine()) != null) {
55    if (line.equals("XXXX"))//你可以自定义读取文件时的结束标志 {
56     break;
57    }
58    bufw.write(line);
59    bufw.newLine();
60    bufw.flush();
61   }
62  }
63 
64 }
复制代码

 

复制代码

 

posted @   菜鸟奋斗史  阅读(448)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示