对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、从Stream到Reader,Writer的转换类:InputStreamReader,OutputStreamWriter
2、对象输入输出:ObjectInputStream,ObjectOutputStream
3、进程间通信:PipeInputStream,PipeOutputStream, PipeReader, PipeWriter
4、合并输入:SequenceInputStream
5、更特殊的需要:PushbackInputStream,PushbackReader, LineNumberInputStream, LineNumberReader
决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):
首先,考虑最原始的数据格式是什么:规则四
第二,是输入还是输出:规则五
第三,是否需要转换流:规则六第1点
第四,数据来源(去向)是什么:规则一
第五,是否要缓冲:规则三(特别注明:一定要注意的是readLine()是否有定义,有什么比read,write更特殊的输入或输出方法)
第六,是否要格式化输出:规则二
- 对java I/O知识的梳理
- JAVA I/O知识梳理
- Java-I/O 设计和类的梳理
- Java I/O— 梳理各种“流”
- Java 对文件的I/O操作
- I/O流的梳理和小结
- I/O流的梳理和小结
- Java I/O 知识小结
- Java的I/O流、BIO、AIO、BIO知识汇总
- JAVA的I/O
- Java的I/O
- JAVA的I/O
- Java的I/O
- I/O知识集--1 关于I/O的基础知识
- 对Java中File I/O的理解
- Java对多路复用I/O技术的支持
- java i/o库关键知识
- Java I/O流知识总结
- 16-2 连接字符串
- Mysql Linux安装和事件调度器(Event Scheduler)
- ARM920T中断体系结构
- hoj 1976 Calendar
- 求组合数算法
- 对java I/O知识的梳理
- Swift——IOS学习杂记(一)
- 【.NET】T4模板——SSDL To SQL10.tt
- 流形的简单知识
- 黑马程序员——(七)集合
- nyoj 129树的判定
- magento 获取magento系统的当前时间
- 装饰者模式
- OSX上配置emacs的C/C++开发环境