6月21日字符流

来源:互联网 发布:雷欧mac飞机 编辑:程序博客网 时间:2024/06/07 12:38

字符流

1字符流:为了处理文字数据方便而出现的对象。

其实这些对象的内部使用的还是字节流(因为文字最终也是字节数据)

只不过,通过字节流读取了相对应的字节数,没有对这些字节直接操作。

而是去查了指定的(本机默认的)编码表,获取到了对应的文字。

简单说:字符流就是:字节流+编码表。

 

2,BufferReader字符读取流缓冲区:

该缓冲区提供了一个一次读一行的方法readLine,方便于对文本数据的获取。当返回null时,表示读到文件末尾。

readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符

BufferWriter

该缓冲区中提供了一个跨平台的换行符。newLine();

3,打印流:

该流提供了打印方法,可以将各种数据类型的数据都原样打印。

字节打印流:

PrintStream

打印流有自己的PrintWriter.println();等方法。

把标准输入流写到文件中

4,转换流

InputStreamReader isr= newInputStreamReader(new FileInputStream("a.txt"));

InputStreamReader isr= newInputStreamReader(new FileInputStream("a.txt"),"gbk");

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

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

OutputStreamWriter osw= newOutputStreamWriter(new FileOutputStream("b.txt"));

OutputStreamWriter osw= newOutputStreamWriter(new FileOutputStream("b.txt"),"gbk");

 

 

4,流操作的基本规律

    1.明确源和目的。
          源:输入流,InputStream和Reader;
         目的:输出流,OutputStream和Writer
     2.明确操作的数据是否是纯文本。
         是:字符流
         不是:字节流。
     3.当体系明确后,再明确要使用哪个具体的对象。
         通过设备来区分:
      源设备:内存、硬盘、键盘
      目的设备:内存、硬盘、控制台。
      此外:如果需要提高效率,则换用对应的缓冲区。
      如果需要指定编码,则换用对应的转换流。
     System类中的setIn()、setOut()、setError()方法,可以改变标准输入流、输出流和错误输出流。

字符流缓冲区:BufferReader和BufferWriter

           a.提高了对数据读写的效率。

           b.必须结合流使用。

           c.在流的基础上对流的功能进行了增强。

 

原创粉丝点击