Java中高级别的输入和输出流的使用教程

90 阅读3分钟

高级别的输入和输出流与低级别的流进行通信,而不是与I/O设备通信。你可以将它们用于高级输入和输出。

大多数Java的高级输入和输出类都从FilterInputStreamFilterOutputStream 超类中继承属性。反过来,这些类又继承自抽象的InputStreamOutputStream 类。

假设你正在为这些类中的一个使用一个DataInputStream 构造函数。你需要向构造函数传递一个InputStream 作为参数。

DataInputStream(InputStreamobjectName)

你可以使用任何继承自InputStream 类的类作为高层流的输入源。例如,你可以使用你已经创建的FileInputStream 对象,或者使用来自socket或管道的输入。

当一个高层流对象,如DataInputStream 类的实例,从一个低层流中接收字节输入时,它将处理这些字节并将其转换为适当的数据类型。

DataInputStream 类包含read 方法,可以将字节转换为所有的原始数据类型,以及UTF字符串。例如,readInt 方法读取接下来的四个字节并将其转换为int 。为了使这些方法正确工作,这四个字节必须代表一个int 。你需要确保数据的读取顺序与写入流的顺序相同。

要关闭一个DataInputStream 对象,你可以使用该类的close 方法。

如果你需要关闭一连串的流对象,你要按相反的顺序来做,这样先创建的对象就是最后要关闭的对象。

这可以防止你在关闭使用它作为输入源的高层流之前关闭一个InputStream

例如,从文件中读取销售数据的代码样本使用close 方法来关闭一个DataInputStream 对象的实例。

    for (int i = 0; i < descs.length; i ++) {

FilterOutputStream 类的子类包括

  • DataOutputStream
  • BufferedOutputStream
  • PrintStream

DataOutputStream

你使用DataOutputStream ,通过在创建对象时将一个OutputStream 传递给一个DataOutputStream 对象作为参数,将数据写入一个流中。

BufferedOutputStream

你使用BufferedOutputStream ,将数据写入一个缓冲区。这反过来又把它写到底层流中。

PrintStream

一个PrintStream 允许其他输出流方便地打印各种格式的数据。这个类从不抛出一个IOException ,不像其他输出流。

DataOutputStream 类的方法处理数据,如字符、整数和UTF字符串,将其转换为字节,并将其写入流中。

File f = new File (myFileName);

补充

选择链接标题在一个新的浏览器窗口中打开资源。

启动窗口

查看DataInputStreamDataOutputStream 方法。

考虑一下创建一个名为fostreamFileOutputStream 对象和一个名为dostreamDataOutputStream 对象的代码。

File f = new File (myFileName);

在这样做时,代码将DataOutputStream 写到FileOutputStream 。 -fostream

它将一个字符串作为参数传递给writeUTF 方法,该方法将其写入输出流中。

最后,它以正确的顺序关闭这两个流。这样一来,最后创建的那个就先被关闭了。

File f = new File (myFileName);