A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王振宇 黑马帝   /  2011-10-12 04:46  /  4697 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王振宇 于 2011-10-13 01:53 编辑

我好歹也是问了这个问题的,这也是我学习技术时遇到的问题,我拿来问!能给我加个技术分吗?我很需要的呀!~~~最主要是我从这几位朋友的回答中知道了要掌握的知识点,谢谢了!~~
回复 使用道具 举报
王振宇 发表于 2011-10-12 09:31
伍碧林 同学的图片看不见呀!~~

纳尼,我怎么可以看见啊。。。。
回复 使用道具 举报
简单来说,IO流用来处理设备之间的数据传输,它包括字节流与字符流。对任何数据的操作完全可以用字节流来表示,后来为了更方便处的理文本类数据,出现了字符流。字符流是融合了编码的字节流。字符流属于字节流。总之,是为了方便人的使用。

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 赞一个!

查看全部评分

回复 使用道具 举报
伍碧林 同学的图片看不见呀!~~
回复 使用道具 举报
     Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。两种流类型处理的数据单位不同!
    以下内容为我在其他帖子中回答过的!情参考!

所有流类型都继承自你所说的四种抽象流类型。他们是所有流类型的父类。
    其中,InputStream,OutputStream为字节流,Reader、Writer为字符流;
          InputStream、Reader为输入流,OutputStream、Writer为输出流。


  记住下面的图表就行了:
      

             字节流       字符流
  
   输入流  InputStream     Reader

    输出流  OutputStream    Writer


    可以认为所有以Stream结尾的都是字节流;所有以Reader或Writer结尾的都是字符流。

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 赞一个!

查看全部评分

回复 使用道具 举报
我也看了老毕的视频,看的时候明白了什么是字节流InputStream OutputStream 什么是字符流 Reader Writer ,但是过几天这两个又混淆了,总是记不清楚,这是因为我没有弄清楚字节流 和 字符流 到底有什么却别,到底是什么意思。请同学们帮帮忙解释一下吧!~~

评分

参与人数 1黑马币 +1 收起 理由
test + 1 同学们快来帮帮,楼主会给金钱的。.

查看全部评分

11 个回复

倒序浏览
欧阳超 黑马帝 2011-10-12 07:21:22
7#
二种 :字节流   字符流
一、它们的区别是二者处理的方式不同:字节流处理的是字节、整数(0-255)等数据,字符流处理的是文本:
        Java内用Unicoder编码存储字符,字符流处理类负责将外部的其他编码的字符流和Java内Unicoder字符流之间的转换:
 
IO流   处理的单元         操作的对象                  常用的类      

字节流 1个字节的Unicode字符    字节、字节数组                ByteArrayInputStream、FileInputStream、InputStream
                                                                  ByterArrayOutputStream、FileOuputStream、OutputStream
                                                                  StringBufferInputStream、FilterOutputStream、

字符流   2个字节的Unicode字符    字符、字符数组、字符串        BufferedReader、CharArrayReader、FilterReader、InputStreamReader、
                                                              StringReader、BufferedWriter、CharArrayWriter、FilterWriter、OutputStreamWriter、StringWriter
二、字节流和字符流之间的桥梁或者说是转换是:
               InputStreamReader和OutputStreamWriter
    从字节流转换成字符流实际上就是 Byte[] 转换为String

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
test + 1 同学们可以互相评金钱分哦。
李印东老师 + 1

查看全部评分

回复 使用道具 举报
伍碧林 黑马帝 2011-10-12 08:31:53
8#
本帖最后由 伍碧林 于 2011-10-12 08:33 编辑

确实很容易混,多敲几次代码可能会好些。下面是我写的笔记,希望对你会有点帮助{:soso_e100:}

      ①FileInputStream和FileOutputStream常用方法:

       public int read()

       public int read(byte[] b)

       public int read(byte[] b, int off, int len)

       new  FileOutputStream(File file, boolean append),是否追加,其中/r/n是换行

       public void write(byte[] b)

       public void write(byte[] b, int off, int len)

      ②BufferedInputStream和BufferedOutputStream:

        BufferedInputStream是InputStream->FilterInputStream的子类

        BufferedOutputStream是OutputStream->FilterOutputStream的子类

        实际最后实现的InputStream和OutputStream实例,多了一个buf数据成员,减少硬盘存取次数.提高效率.为了缓冲区数据一定被写至目的地,建议最后执行flush();

     ③DataInputStream和DataOutputStream:

       DataInputStream是InputStream->FilterInputStream的子类

       DataOutputStream是OutputStream->FilterOutputStream的子类

       对java基本数据类型写入的方法,像int、double和boolean等的方法

      ④ObjectInputStream和ObjectOutputStream:

       直接将内存中整个对象存储至文件,

      ⑤: SequenceInputStream:

             文件分割合并上好用

      ⑥: PrintStream

  打印流,是OutputStream->FilterOutputStream的子类,可以自动进行字符转换的动作,默认会使用操作系统的编码来处理对应的字符转换动作,使用打印流输入最为方便,建议以后在输出的时候就使用打印流,jdk 1.5之后对print()方法更新,加入了格式化操作printf(),和C语言一样好像过时了.一般用PrintWrite

      ⑦ByteArrayInputStream和ByteArrayOutputStream:

       内存流, 流的来源或目的不是文件是内存空间

      ⑧PushbackInputStream:

       没有实际应用过

      ⑨PipedInputStream:管道流



① InputStreamReader和OutputStreamWriter

       对InputStream和OutputStream进行字符处理,字符和字节流之间的转换

      ②FileReader和FileWriter

       FileReader是Reader->InputStreamReader的子类

       FileWriter是Writer ->OutputStreamWriter-的子类

FileInputStream 类以二进制输入 / 输出, I/O 速度快且效率高,但是它的 read ()方法读到的是一个字节,很不利于人们阅读。 而 FileReader 类弥补了这个缺陷,可以以文本格式输入/ 输出,非常方便;比如可以使用 while((ch = filereader.read())!=-1 ) 循环来读取文件;

      ③BufferedReader和BufferedWriter

      ④PrintWriter

       同样是打印流,同PrintStream不同的是PrintWriter还可以接受Writer对象作为输出的对象

      ⑤CharArrayReader和CharArrayWriter

      ⑥PushbackReader


评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
test + 1 同学们可以互相评金钱分哦。
李印东老师 + 1

查看全部评分

回复 使用道具 举报
张洋铭 黑马帝 2011-10-12 13:53:48
9#
一、按数据来源(去向)分类:

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

三、按是否要缓冲分:

要缓冲:BufferedInputStream, BufferedOutputStream,( 字节流)

BufferedReader, BufferedWriter( 字符流)

四、按数据格式分:

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

Stream 结束的子类

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

Writer 的子类

评分

参与人数 1技术分 +3 黑马币 +8 收起 理由
wangfayin + 3 + 8 很给力!

查看全部评分

回复 使用道具 举报
其实也不是很难理解
字符流和字节流是根据处理数据的不同来区分的。字节流按照8位传输,字符流按照16位传输
由于字符流使用Unicode字符集,支持多国文字,因此若流要跨越多种平台传输,应使用字符流。
字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的.

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
王振宇 黑马帝 2011-10-13 13:03:49
11#
张洋铭 发表于 2011-10-12 13:53
一、按数据来源(去向)分类:

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

不错,很明白呀!~~~

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
9楼总结的很全面啊、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马