黑马程序员-探究字节流三

来源:互联网 发布:怎么统计淘宝消费 编辑:程序博客网 时间:2024/05/18 14:25

------ <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! -------

package it.heima.mylog;


public class InputStreamReaderAndOutputStreamWriter {
/**

* 关键字:转换流,编码解码。

* 转换流: 
* InputStreamReader:字节到字符的桥梁。解码。
*  OutputStreamWriter:字符到字节的桥梁。编码。
* 流的操作规律:之所以要弄清楚这个规律,是因为流对象太多了,用的时候不知道哪个对象合适。 
* 通过四个明确,判断使用哪个流对象。 
* 1,明确源和目的。
* 源:InputStream Reader 目的:OutputStream Writer 
* 2,明确数据是否是存文本数据
* 源:是纯文本,就Reader。不是就InputStream 目的:是纯文本,就Writer。不是就OutputStream
* 通过上面的判断就可以明确具体使用哪个体系了。 
* 3,明确具体的设备
* 源设备:硬盘:File|键盘:System.in|内存:数组|网络:Socket流
* 目的设备:硬盘:File|控制台:System.out|内存:数组|网络:Socket流 4,是否需要其他额外功能啊
* 是,需要高效缓冲区,就加上buffer我还有,转换。
*/

/**
* 练习: 需求一:复制一个文本文件。 
* 1,明确源和目的 源:InputStream Reader 目的:OutputStream Writer
* 2,是否是纯文本 是。 源:Reader 目的:Writer 
* 3,明确具体的设备 源:硬盘,用File 目的:硬盘,用File
* 4,需要额外的功能吗? 需要。要高效。 
* BufferedReader buff = new BufferedReader(new FileReader("XX.txt")); 
* BuffferedWriter bufw = new BufferedWriter(new FileWriter("XXX.txt"));
********************************************************************* 
* 需求二:读取键盘录入信息,并写入一个文件中。 
* 1,明确源和目的 源:InputStream Reader 目的:OutputStream Writer 
* 2,是否是纯文本呢? 是。 源:Reader 目的:Writer 
* 3,明确设备 
* 源:键盘,用System.in
* 目的:硬盘,用File InputStream in = System.in; FileWriter fw = new FileWriter("XXX.txt"); 
* 这样做可以完成,但是麻烦。将读取的字节数据转成字符串,再由字符流操作。 
* 4,需要额外功能吗?
* 要。要转换。将字节流转换成字符流。
* 使用InputStreamReader InputStreamReader isr = new InputStreamReader(System.in); 
* FileWriter fw = new FileWriter("XXX.txt");
* 再强点,我还想高效。 
* BufferderReader buff = new BufferderReader(new InputStreamReader(System.in)); 
* BUfferderWriter bufw = new BufferderReader(new FileWriter("XXX.txt"));
********************************************************************* 
* 需求三:将一个文本文件数据显示在控制台上。 
* 1,明确源和目的 源:InputStream Reader 目的:OutputStream Writer 
* 2,是否是纯文本数据 是。 源:Reader 目的:Writer 
* 3,明确具体的设备 
* 源:硬盘,用File
* 目的:控制台,用System.out 
* FileReader fr = new FileReader("XXX.txt");
* OutputStream out = System.out 
* 4,需要额外的功能吗? 需要。需要转换。 
* FileReader fr = new FileReader("XXX.txt"); 
* OutputStreamWriter osw = new OututStreamWriter(System.out); 
* 还想高点高效。 
* BufferedReader bufr = new BufferedReader(new FileReader("XXX.txt")); 
* BufferedReader bufw = new BufferedWriter(new OutputStreamWriter(System,out));
********************************************************************* 
* 需求四:读取键盘录入数据,显示子啊控制台上。 
* 1,明确源和目的 源:InputStream Reader 目的:OutputStream Writer 
* 2,是否是纯文本呢 是。 源:Reader 目的:Writer 
* 3,明确设备 
* 源:键盘,用System.in
* 目的:控制台,用System.out 
* InputStream in = new System.in; 
* OutputStream out = new System.out; 
* 4,需要额外的功能吗 要。 需要转换,因为都是字节流,但是操作的却是文本数据,所以使用字符流操作起来更为便捷。
* InputStreamReader isr = new InputStreamReader(System.in);
* OutputStreamWriter osw = new OutputStreamWriter(System.out); 
* 还要加入缓冲技术
* BufferedReader bufr = new BuuferedReader(new InputStreamReader(System.in)); 
* BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
********************************************************************* 
* 需求五:将一个中文字符串数据按指定的编码表写入到一个文本文件中。
* 1,目的。OutputStream,Writer 
* 2,是纯文本,Writer
* 3,设备:硬盘,用File 
* FileReader fw = new FileWriter("XXX.txt"); fw.write("你好");
********************************************************************* 
* 注意: 既然需求中已经明确了指定编码表的动作,那就不可以使用FileWriter,因为FileWriter内部 使用的是默认的本地编码表。
* 只能使用其父类。OutputStreamWriter
* OutputStreamWriter接收一个字节流对象,既然是操作文件,那么对象应该是FileOutputStream
* OutputStreamWriter osw = new OutputStreamWriter(newFileOutputStream(("XXX.txt"),charsetName)); 
* 需要高效吗?
* BfferedReadWriter bufw = new BufferedReader(new OutputStreamWriter(newFileOutputStream(("XXX.txt"),charsetName)));
********************************************************************* 
* 总结:什么时候使用转换流??? 
* 1,源或者目的的对应的设备室字节流,但是操作的却是文本数据,可以使用转换作为桥梁。提高对文本的操作便捷。
* 2,一操作文本涉及到具体的指定编码表是,必须使用转换流。 哦了。

* 今天改变了下学习方式,必须先复习。理解起来有了针对性,以至不感觉枯燥没了睡意。 到今天,通过IO就可以在DOS下搞个互动计算器了。。。准备中
* 不能落下。
* 单词白天写了。无错。
*/

}

//-----------------------------------------------------------------------------------------------------------------------------------2014年3月16日整理

------ <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! -------

0 0
原创粉丝点击