输入流输出流,搞不懂啊!!!!

moudgeen 2003-08-19 06:17:52
我老是搞不懂这个输入流与输出流之间的关系,什么InputStream,FileInputStream,OutputStream.....我头都是疼的,他们到底怎么用呢?什么时候该用哪个,各位大哥教我;
你们看下面这代码成立吗?
FileInputStream fin=new FileInputStream(System.in);
FileOutputStream fouts=new FileOutputStream(System.out);
我编译时出现以下错误提示:
^
FileIO.java:13: cannot resolve symbol
symbol : constructor FileInputStream (java.io.InputStream)
location: class java.io.FileInputStream
FileInputStream fin=new FileInputStream(System.in);
^
FileIO.java:27: cannot resolve symbol
symbol : constructor FileOutputStream (java.io.PrintStream)
location: class java.io.FileOutputStream
FileOutputStream fouts=new FileOutputStream(System.out);
为什么?
^
...全文
324 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cui_yihao 2003-08-19
  • 打赏
  • 举报
回复
构造函数:
1.FileInputStream(File file)
Creates a FileInputStream by opening a connection to an actual file,
the file named by the File object file in the file system.
2.FileInputStream(FileDescriptor fdObj)
Creates a FileInputStream by using the file descriptor fdObj, which
represents an existing connection to an actual file in the file system.
3.FileInputStream(String name)
Creates a FileInputStream by opening a connection to an actual file,
the file named by the path name name in the file system.
zhangxx73 2003-08-19
  • 打赏
  • 举报
回复
FileInputStream,FileOutputStream这都不是包装类,不能包别的类的。

7.3.1 理解流的概念
数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
我们将IO流类分为两个大类,节点流类和过滤流类(也叫处理流类)。程序用于直接操作目标设备所对应的类叫节点流类,程序也可以通过一个间接流类去调用节点流类,以达到更加灵活方便地读写各种类型的数据,这个间接流类就是过滤流类(也叫处理流类),我更喜欢称之为包装类。不管叫什么,都只是一个代名词而已,读者不要太在意,你可以根据自己的习惯和喜好来定。

7.3.2 InputStream与OutputStream
程序可以从中连续读取字节的对象叫输入流,用InputStream类完成,程序能向其中连续写入字节的对象叫输出流,用OutputStream类完成。InputStream与OutputStream对象是两个抽象类,还不能表明具体对应哪种IO设备。它们下面有许多子类,包括网络、管道、内存、文件等具体的IO设备,如FileInputStream类对应的就是文件输入流,是一个节点流类,我们将这些节点流类所对应的IO源和目标称为流节点(Node)。
指点迷津:
很多人搞不清程序要将A文件的内容写入B文件中,程序对A文件的操作所用的是输出类还是输入类这个问题。读者也先自己想想,再记住下面的话,输入输出类是相对程序而言的,而不是代表文件的,所以我们应该创建一个输入类来完成对A文件的操作,创建一个输出类来完成对B文件的操作。
。。。。。。。。。。。。。
。。。。。。。。。。。。。。
在前面的部分,我们接触到了许多节点流类,就以FileOutputStream和FileInputStream为例吧,这两个类只提供了读写字节的方法,我们通过它们只能往文件中写入字节或从文件中读取字节。在实际应用中,我们要往文件中写入或读取各种类型的数据,我们就必须先将其他类型的数据转换成字节数组后写入文件或是将从文件中读取到的字节数组转换成其他类型,这给我们的程序带来了一些困难和麻烦。如果有人给我们提供了一个中间类,这个中间类提供了读写各种类型的数据的各种方法,当我们需要写入其他类型的数据时,只要调用中间类中的对应的方法即可,在这个中间类的方法内部,它将其他数据类型转换成字节数组,然后调用底层的节点流类将这个字节数组写入目标设备。我们将这个中间类叫做过滤流类或处理流类,也叫包装类,如IO包中有一个叫DataOutputStream的包装类,
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

使用输出包装类的过程,就好比我们要给某个市长送礼,该市长向来不接受陌生人的礼品,但其夫人则是来者不拒的。我们只要将礼品送到市长夫人手中,就等于送到了市长的手中。市长夫人就是我们用到的输出包装类。
使用输入包装类过程,好比我们要想借用市长大人的一点权力,承揽一个假竞标的工程项目,我们是没法直接请动市长大人来替我们说话的,但我们可以让市长公子来替我们办好这件事,我们就间接借用了市长的权力。市长公子就是我们用到的输入包装类。
我们还可以用包装类去包装另外一个包装类,创建包装类对象时,必须指定它要调用的那个底层流对象,也就是这些包装类的构造函数中,都必须接收另外一个流对象作为参数。如DataOutputStream包装类的构造函数为:
public DataOutputStream(OutputStream out)

你们问的问题在www.it315.org《Java就业培训教程》中都有讲解,看来真是一本好书,能让你少走不少弯路,一本差书,能使你浪费许多时间。




zhangxx73 2003-08-19
  • 打赏
  • 举报
回复
FileInputStream,FileOutputStream这都不是包装类,不能包别的类的。

7.3.1 理解流的概念
数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
我们将IO流类分为两个大类,节点流类和过滤流类(也叫处理流类)。程序用于直接操作目标设备所对应的类叫节点流类,程序也可以通过一个间接流类去调用节点流类,以达到更加灵活方便地读写各种类型的数据,这个间接流类就是过滤流类(也叫处理流类),我更喜欢称之为包装类。不管叫什么,都只是一个代名词而已,读者不要太在意,你可以根据自己的习惯和喜好来定。

7.3.2 InputStream与OutputStream
程序可以从中连续读取字节的对象叫输入流,用InputStream类完成,程序能向其中连续写入字节的对象叫输出流,用OutputStream类完成。InputStream与OutputStream对象是两个抽象类,还不能表明具体对应哪种IO设备。它们下面有许多子类,包括网络、管道、内存、文件等具体的IO设备,如FileInputStream类对应的就是文件输入流,是一个节点流类,我们将这些节点流类所对应的IO源和目标称为流节点(Node)。
指点迷津:
很多人搞不清程序要将A文件的内容写入B文件中,程序对A文件的操作所用的是输出类还是输入类这个问题。读者也先自己想想,再记住下面的话,输入输出类是相对程序而言的,而不是代表文件的,所以我们应该创建一个输入类来完成对A文件的操作,创建一个输出类来完成对B文件的操作。
。。。。。。。。。。。。。
。。。。。。。。。。。。。。
在前面的部分,我们接触到了许多节点流类,就以FileOutputStream和FileInputStream为例吧,这两个类只提供了读写字节的方法,我们通过它们只能往文件中写入字节或从文件中读取字节。在实际应用中,我们要往文件中写入或读取各种类型的数据,我们就必须先将其他类型的数据转换成字节数组后写入文件或是将从文件中读取到的字节数组转换成其他类型,这给我们的程序带来了一些困难和麻烦。如果有人给我们提供了一个中间类,这个中间类提供了读写各种类型的数据的各种方法,当我们需要写入其他类型的数据时,只要调用中间类中的对应的方法即可,在这个中间类的方法内部,它将其他数据类型转换成字节数组,然后调用底层的节点流类将这个字节数组写入目标设备。我们将这个中间类叫做过滤流类或处理流类,也叫包装类,如IO包中有一个叫DataOutputStream的包装类,
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

使用输出包装类的过程,就好比我们要给某个市长送礼,该市长向来不接受陌生人的礼品,但其夫人则是来者不拒的。我们只要将礼品送到市长夫人手中,就等于送到了市长的手中。市长夫人就是我们用到的输出包装类。
使用输入包装类过程,好比我们要想借用市长大人的一点权力,承揽一个假竞标的工程项目,我们是没法直接请动市长大人来替我们说话的,但我们可以让市长公子来替我们办好这件事,我们就间接借用了市长的权力。市长公子就是我们用到的输入包装类。
我们还可以用包装类去包装另外一个包装类,创建包装类对象时,必须指定它要调用的那个底层流对象,也就是这些包装类的构造函数中,都必须接收另外一个流对象作为参数。如DataOutputStream包装类的构造函数为:
public DataOutputStream(OutputStream out)

你们问的问题在www.it315.org《Java就业培训教程》中都有讲解,看来真是一本好书,能让你少走不少弯路,一本差书,能使你浪费许多时间。




pzl686 2003-08-19
  • 打赏
  • 举报
回复
这些文档里都有的
pzl686 2003-08-19
  • 打赏
  • 举报
回复
public class FileInputStream
extends InputStream
A FileInputStream obtains input bytes from a file in a file system. What files are available depends on the host environment.
---------------------------------------------------
public class FileOutputStream
extends OutputStream
A file output stream is an output stream for writing data to a File or to a FileDescriptor. Whether or not a file is available or may be created depends upon the underlying platform. Some platforms, in particular, allow a file to be opened for writing by only one FileOutputStream (or other file-writing object) at a time. In such situations the constructors in this class will fail if the file involved is already open.
-----------------------------------
public abstract class OutputStream
extends Object
This abstract class is the superclass of all classes representing an output stream of bytes. An output stream accepts output bytes and sends them to some sink.

Applications that need to define a subclass of OutputStream must always provide at least a method that writes one byte of output.
-------------------------------------
public abstract class InputStream
extends Object
This abstract class is the superclass of all classes representing an input stream of bytes.

Applications that need to define a subclass of InputStream must always provide a method that returns the next byte of input.



62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧