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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高顺德 中级黑马   /  2013-3-25 11:52  /  1349 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 天下 于 2013-3-26 15:55 编辑

java中有几种流 ,有什么区别。什么时候用哪种?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-26 12:20

评分

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

查看全部评分

3 个回复

正序浏览
可分为字节流与字符流,接口OutputStream与Reader的实现类都是输入流,接口InputStream与Writer的实现类都是输出流 OutputStream与InputStream是处理字节类型的字节流, Writer与Reader是处理字符的字符流。
不管字符流还是字节流,底层都是通过字节流去实现的。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
大体可以分为字符流和字节流。字符流包含:Reader(字符输入流),Writer(字符输出流);字节流包含:InputStream(字节输入流),OutputStream(字节输出流);这四个是抽象类,所以不能直接实例化。只能实例化它下面的子类。字符流用于操作字符文件,如文本文件。字节流用于操作字节文件,如音乐,视频等。我们学习的都是这四个抽象类下面的几个重要的子类。细节自己看看api就清楚了!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
 JAVA IO操作总结——节点流和处理流  按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
  节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader
  处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
  常用的节点流
  父 类 InputStream OutputStream Reader Writer
  文 件 *FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流
  数 组 *ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)
  字符串 *无  无 StringReader StringWriter 对字符串进行处理的节点流
  管 道 *PipedInputStream PipedOutputStream PipedReader PipedWriter 对管道进行处理的节点流
  常用处理流(关闭处理流使用关闭里面的节点流)
  父 类 InputStream OutputStream Reader Writer
  缓冲流 *BufferedImputStrean BufferedOutputStream BufferedReader BufferedWriter ----需要父类作为参数构造,增加缓冲功能,避免频繁读写硬盘,可以初始化缓冲数据的大小,由于带了缓冲功能,所以就写数据的时候需要使用flush方法咯
  转换流 *InputStreamReader OutputStreamWriter- 要inputStream或OutputStream作为参数,实现从字节流到字符流的转换
  数据流 *DataInputStream DataOutputStream -提供将基础数据类型写入到文件中,或者读取出来,为什么要有这个流呢?看这样的分析,如果没有这种流的话,有一个long,本身只占8个字节,如果我要写入到文件,需要转成字符串,然后在转成字符数组,那空间会占用很多,但是有了这种流之后就很方便了,直接将这8个字节写到文件就完了。。是不是既节约了内存空间有让程序写起来更加方便简单了呐。写倒是很简单,但是读取的时候就注意了,根据读取的数据类型,指针会往下移,所以你写的顺序必须要和读的顺序一致才能完成你正确的需求。
  对象流*ObjectInputStream ObjectOutputStream
  打印流*PrintStream,PrintWriter这类流在写入的时候有自动flush的功能,所以你不需要每打印一个东西都flush一次)
  System.In====InputStream
  System.Out===PrintStream

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马