【Java】 IO流的再次认识

来源:互联网 发布:skype 下载 mac版本 编辑:程序博客网 时间:2024/06/04 23:33

总体结构图




一.字节流和字符流的异同:


1 字节流是一个字节一个字节的读取数据。而字符流是一次读取一个或者多个字节时,先去查指定的编码表(UTF-8,GBK),然后再将字符返回。

2 字节流可以处理所有的数据类型(图片,音频,AVI视频...)。字符流只能处理字符数据。所以,处理纯文本数据的时候,优先考虑使用字符流,除此之外,都使用字节流。

二.IO流大体可分为节点流和处理流:


1 节点流:可以从固定的地方或者节点来读取数据

   File: FileReader,FileWriter。(字符流)

        FileInputStream,FileOutPutStream。(字节流)

  String:StringReader,StringWriter。(字符流)

       ....

2 处理流:对一个已经存在的流进行连接和封装,通过封装的流进行数据的读写操作。处理流的构造方法总是要带一个其他的流作为它的参数。一个流对其他流进行的多次包装也叫做流的链接。具体有:

2.1 缓冲流:

字节流:BufferedInputStream,BufferedOutPutStream。
字符流:BufferedWriter,BufferedReader。

(字节流同理)字符流写入BufferedWriter bufw = new BufferedWriter(new FileWriter("test.txt")); 
(字节流同理字符流读取BufferedReader buff = new BufferedReader(new FileReader("test.txt")); 

该类型的流有一个特有的方法:readLine();一次读一行,读到行标记时,将行标记之前的字符数据作为字符串进行返回,读到末尾时,返回NULL

2.2 转换流:

该类型是字符流和字节流的桥梁。该流的对象可以对读取数据的字节流按照设定的编码进行转换。

读取流: (默认编码) InputStreamReader(new InputStream)
   (设定编码) InputStreamReader(new InputStream,String charSet)
 
写入流: (默认编码) OutputStreamWriter(new OutputStream)
   (设定编码) OutputStreamWriter(new OutputStream,String charSer)
  比较:     (默认编码)  FileReader fr = new FileReader("test.txt"); ==== InputStreamReader isr = new InputStreamReader(new FileInputStream("test.txt"));
(设定编码)  FileReader fr = new FileReader("test.txt"); ==== InputStreamReader isr = new InputStreamReader(new FileInputStream("text.txt"),String charSet);

2.3 数据流:

该类型直接对一些基本类型的数据进行存储和读取,不需要进一步的住转换。

   读取:DataInputStream(InputStream)
   写入:DataOutputStream(OutputStream)

2.4 打印流:

PrintStream:是一个字节打印流
接受3种数据类型的值:1.字符串类型 2.File对象 3.OutputStream

PrintWriter:是一个字符打印流
接受4种数据类型的值: 1.字符串类型 2.File对象 3.OutpStream 4.Writer

2.5 对象流:

常用于try catch。

0 0
原创粉丝点击