JAVA中的I/0流实验(一)

        我门学校的课程安排真是搞笑,原来都没有学过JAVA,这学期来了直接就上JAVA网络编程,搞笑嘛,幸亏JAVA与C++类似,接受起来还不算太难,这不,开始一个又一个的实验了吧,我刚开始不想写的,这两天是复习考研感觉有点累了,编程放松一下自己,哈哈。。。

在本实验中,

我门首先了解两个概念:字节流和字符流

1、 字节流(故名思意,以字节为单位)

  所有的读操作都继承自一个公共超类java.io.InputStream类。

  所有的写操作都继承自一个公共超类java.io.OutputStream类。

  InputStream和OutputStream都是抽象类。

字节流又分为基本I/0字节流(FileInputStream/FileOutputStream)与字节过滤流(BufferedInputStream/BufferedOutputStream)

2、 字符流

  注:是在jdk1.1里面引进的,上面字节流是在jdk1.0引进的。当用于处理文本数据时,选择字符流比字节流更好。但对只出路基本数据类型的开发者,可以继续使用字节流。

  所有的读操作都继承自一个公共超类java.io.Reader类。

  所有的写操作都继承自一个公共超类java.io.Writer类。

  同样Reader和Writer也是抽象类。

字符流又分为基本I/O字符流(FileReader/FileWriter)和字符过滤流(BufferedReader/BufferedWriter)

3、他们的区别: 字节流与字符流主要的区别是他们的的处理方式 字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的。 但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化 ;

      字符流和字节流这两个流之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联 在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的

    在从字节流转化为字符流时,实际上就是byte[]转化为String时, public String(byte bytes[], String charsetName) 有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang 而在字符流转化为字节流时,实际上是String转化为byte[]时, byte[] String.getBytes(String charsetName) 也是一样的道理

4、过滤流

过滤流就是在raw_stream(原始字节流之上),为了便于程序员操作数据而可以对原始字节流进行一定的改造或者过滤,它的使用必须建立在字节流之上,否则就毫无意义。


原文地址:https://www.cnblogs.com/javaadu/p/11742752.html