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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Benwolf0818 中级黑马   /  2013-3-11 11:27  /  1330 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 崔芝鲁 于 2013-3-13 10:29 编辑

我想学习java有段时间了,对何时用字节流,何时用字符流不知甚解?望高手详解

点评

你的问题是解决了,还是没解决?如果没解决,请将分类改为未解决  发表于 2013-3-11 11:36

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

5 个回复

倒序浏览
这个,看下java 毕老师的视频吧,就自学那个视频。。
里面有一集是专门讲你这个问题的。。
为了避免你偷懒,就不告诉你哪集了。哈哈
字节流:用来处理图片、音频、视频、等非文本文件时用字节流。InpusStream/OutputSteam
字符流:用来处理txt等文本文件时用字符流。Reader/Writer
回复 使用道具 举报
流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一  样会开启一个流,数据目的地也可以是文件、内存或者网络等。流的创建是为了更方便地处理数据的输入输出。
  流分为字节流和字符流。字节流也称为原始数据,需要用户读入后进行相应的编码转换。而字符流的实现是基于自动转换的,读取数据时会把数据按照JVM的默认编码自  动转换成字符。
字节流由InputStream和OutputStream处理,而字符流由Reader和Writer处理。Reader和Writer是Java后加入的处理类,出于让数据的处理更方便的目的。

二、字节流和字符流
      如果数据流中最小的数据单元是字节,那么称这种流为字节流;如果数据流中最小的数据单元是字符,那么称这种流为字符流。在Java的IO系统中,java.io.InputStream和java.io.OutputStream分别表示字节输入流字节输出流,java.io.Reader和java.io.Writer分别表示字符输入流字符输出流
I/O流的层次
1.字节流:
从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。
◇ InputStream、OutputStream
  FileInputStream、FileOutputStream
    PipedInputStream、PipedOutputStream
  ByteArrayInputStream、ByteArrayOutputStream
  FilterInputStream、FilterOutputStream
   DataInputStream、DataOutputStream
  BufferedInputStream、BufferedOutputStream
2.字符流:
从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。
◇ Reader、Writer
   InputStreamReader、OutputStreamWriter
        PipedReader、PipedWriter
   FileReader、FileWriter
  CharArrayReader、CharArrayWriter
   FilterReader、FilterWriter
  BufferedReader、BufferedWriter
  StringReader、StringWriter

回复 使用道具 举报
张宁 发表于 2013-3-11 14:31
流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存 ...

受教了!!
回复 使用道具 举报
    文件的存储一般有两种,一种是ASCII编码的,一种是二进制形式的。

  ASCII文件便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间。
二进制文件可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。

    而java中的字符流就是用于处理ASCII编码文件,以便于对字符的操作,字节流适合二进制的操作,
当然二者之间是可以互相转化的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马