黑马程序员技术交流社区

标题: 关于文件读取流 [打印本页]

作者: Benwolf0818    时间: 2013-3-11 11:27
标题: 关于文件读取流
本帖最后由 崔芝鲁 于 2013-3-13 10:29 编辑

我想学习java有段时间了,对何时用字节流,何时用字符流不知甚解?望高手详解
作者: 曾钦    时间: 2013-3-11 12:17
这个,看下java 毕老师的视频吧,就自学那个视频。。
里面有一集是专门讲你这个问题的。。
为了避免你偷懒,就不告诉你哪集了。哈哈
字节流:用来处理图片、音频、视频、等非文本文件时用字节流。InpusStream/OutputSteam
字符流:用来处理txt等文本文件时用字符流。Reader/Writer
作者: 张宁    时间: 2013-3-11 14:31
流是一个抽象的概念。当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


作者: Benwolf0818    时间: 2013-3-11 15:28
张宁 发表于 2013-3-11 14:31
流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存 ...

受教了!!
作者: fighting    时间: 2013-3-11 23:27
    文件的存储一般有两种,一种是ASCII编码的,一种是二进制形式的。

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

    而java中的字符流就是用于处理ASCII编码文件,以便于对字符的操作,字节流适合二进制的操作,
当然二者之间是可以互相转化的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2