对java I/O知识的梳理

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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值