对java I/O知识的梳理

来源:互联网 发布:搜狐出品的网络剧 编辑:程序博客网 时间:2024/06/05 20:48

注:此博客部分内容从互联网搜索得到。

Java中的I/O分为字节流和字符流。

1.两者的区别。

字节流:以byte的格式。

字符流:以unicode编码的格式。unicode一般为2个字节。通常为写入内存的格式。

两者属于不同的处理方式。

2.Java中字节流的类。

Java中的输入字节流的类如下图所示:




输出字节流如下图所示:


分析:其中FileInputStream,PipedInputStream, ByteArrayInputStream, SequenceInputStream,StringBufferInputStream,ObjectInputStream表示数据的输入源分别是文件,管道,字节数组,一个由其它种类的流组成的序列,String数组和对象。而FilterInputStream用于控制输入的顺序,包括DataIn/OutStream这样按照指定类型的输出以及BufferedOutputStream这样将数据缓冲到缓冲区等等。


3.Java中字符流的类。

字符流的输入类如下:


字符流的输出类如下:



应该根据具体的场合适用具体的类。

4.用于两者之间转换的类。

InputStreamReader:将输入字节流转换成字符流。

如:InputStreamReaderir = new InputStreamReader(new FileInputStream(“src”));

OutputStreamWriter:将输出字节流转换成字符流。

FileOutputStreamfos =newFileOutputStream("a");

OutputStreamWriterOutputStreamWriter=newOutputStreamWriter(fos);

5.Java I/O的一般使用规则。

一、按数据来源(去向)分类:

1、是文件:FileInputStream,FileOutputStream, ( 字节流)FileReader,FileWriter(字符)

2、是byte[]ByteArrayInputStream,ByteArrayOutputStream(字节流)

3、是Char[]:CharArrayReader, CharArrayWriter( 字符流)

4、是String:StringBufferInputStream, StringBufferOuputStream ( 字节流)StringReader,StringWriter(字符流)

5、网络数据流:InputStream,OutputStream,(字节流)Reader, Writer( 字符流)

二、按是否格式化输出分:

1、要格式化输出:PrintStream,PrintWriter

三、按是否要缓冲分:

1、要缓冲:BufferedInputStream,BufferedOutputStream,(字节流)BufferedReader, BufferedWriter( 字符流)

四、按数据格式分:

1、二进制格式(只要不能确定是纯文本的):InputStream, OutputStream 及其所有带Stream结束的子类

2、纯文本格式(含纯英文与汉字或其他编码方式);Reader,Writer及其所有带Reader,Writer的子类

五、按输入输出分:

1、输入:Reader,InputStream类型的子类

2、输出:Writer,OutputStream类型的子类

六、特殊需要:

1、从StreamReader,Writer的转换类:InputStreamReader,OutputStreamWriter

2、对象输入输出:ObjectInputStream,ObjectOutputStream

3、进程间通信:PipeInputStream,PipeOutputStream, PipeReader, PipeWriter

4、合并输入:SequenceInputStream

5、更特殊的需要:PushbackInputStream,PushbackReader, LineNumberInputStream, LineNumberReader

决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):

首先,考虑最原始的数据格式是什么:规则四

第二,是输入还是输出:规则五

第三,是否需要转换流:规则六1

第四,数据来源(去向)是什么:规则一

第五,是否要缓冲:规则三(特别注明:一定要注意的是readLine()是否有定义,有什么比read,write更特殊的输入或输出方法)

第六,是否要格式化输出:规则二

0 0
原创粉丝点击