Java I / O流;有什么区别?

时间:2009-07-21 15:44:47

标签: java io stream java-io

java.io有许多不同的I/O个流,(FileInputStream,FileOutputStream,FileReader,FileWriter,BufferedStreams等等),我很困惑地确定它们之间的差异。有哪些例子,其中一种流类型优先于另一种流类型,它们之间的真正区别是什么?

9 个答案:

答案 0 :(得分:37)

Streams:一次一个字节。适合二进制数据。

读者/作者:一次一个字符。适用于文本数据。

任何“缓冲”:一次多个字节/字符。几乎所有时间都很好。

答案 1 :(得分:24)

在学习Java时,我制作了关于java.io的这个心理方案:

  • 面向字节的流(8位)
  • 适用于二进制数据,例如Java .class文件
  • 适合“以机器为导向”的数据

读取器/写入

  • char(utf-16)导向流(16位)
  • 适用于Java源代码等文本
  • 适合“以人为本”的数据

缓冲

    除非另有证明,否则
  • 始终有用

答案 2 :(得分:12)

这是一个很大的话题!我建议您先阅读I/O Streams

  

I / O流表示输入   源或输出目的地。一个   流可以代表许多不同的   各种来源和目的地,   包括磁盘文件,设备,其他   程序和内存数组。

     

Streams支持许多不同的类型   数据,包括简单字节,   原始数据类型,本地化   字符和对象。一些流   简单地传递数据;其他人操纵   并以有用的方式转换数据。

答案 3 :(得分:8)

将每个名字分成单词:每个大写都是不同的单词。

  • 文件输入流是使用文件获取输入
  • 文件输出流是使用
  • 输出写入文件

依旧等等

正如mmyers所写:

  

Streams:一次一个字节。

     

读者/作者:一次一个字符。

     

缓冲*:一次多个字节/字符。

答案 4 :(得分:5)

我也发现了java_tip_how_read_files_quickly

非常实用! 它显示哪些流最有效。

答案 5 :(得分:3)

您提到的特殊化是用于为各种数据源提供标准接口的特定类型。例如,FileInputStream和ObjectInputStream都将实现InputStream接口,但将分别对文件和对象进行操作。

答案 6 :(得分:3)

这可能是对Java IO API中各种流,Reader和Writer的最全面的概述:

http://tutorials.jenkov.com/java-io/overview.html

它是一个更大的Java IO教程的一部分,涵盖了基于字节和字符的流。

它还包括用于读取和写入原始数字数据的流,如int的float等。

它还包括用于解析的流,如PushbackInputStream和PushbackReader。

答案 7 :(得分:2)

字节流是java 1.0中用于字符和字节的主要和广泛使用的流类型。在Java 1.0之后,它已被弃用,字符流起着重要作用。即,例如

BufferedReader将从源获取字符,其构造函数如下所示 BufferedReader(Reader inputReader)..

这里Reader是一个抽象类,其具体类的一次是InputStreamReader,它将字节转换为字符并从键盘输入(System.in)......

BufferedReader:包含将从流中读取字符的内部缓冲区。内部计数器通过read()跟踪要提供给缓冲区的下一个字符。 InputStreamReader将输入作为字节并在内部转换为字符。

答案 8 :(得分:1)

Java输入和输出是根据称为“流”的抽象概念定义的,该流是一系列数据。 有两种流。

  • 字节流(8位字节)Æ抽象类是:InputStream和OutputStream
  • 字符流(16位UNICODE)Æ抽象类是:读者和作家

java.io. *类使用装饰器设计模式。装饰设计模式附加 在运行时对对象的责任。装饰器比继承更灵活,因为继承 在编译时将责任附加到类。 java.io. *类使用装饰器模式来构造 基于某些基本类在运行时的不同行为组合。 enter image description here enter image description here

来自 Java / J2EE求职面试伴侣的书。作者:K.Arulkumaran& A.Sivayini