高级别的输入和输出流与低级别的流进行通信,而不是与I/O设备通信。你可以将它们用于高级输入和输出。
大多数Java的高级输入和输出类都从FilterInputStream 和FilterOutputStream 超类中继承属性。反过来,这些类又继承自抽象的InputStream 和OutputStream 类。
假设你正在为这些类中的一个使用一个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 类的子类包括
DataOutputStreamBufferedOutputStreamPrintStream
DataOutputStream
你使用DataOutputStream ,通过在创建对象时将一个OutputStream 传递给一个DataOutputStream 对象作为参数,将数据写入一个流中。
BufferedOutputStream
你使用BufferedOutputStream ,将数据写入一个缓冲区。这反过来又把它写到底层流中。
PrintStream
一个PrintStream 允许其他输出流方便地打印各种格式的数据。这个类从不抛出一个IOException ,不像其他输出流。
DataOutputStream 类的方法处理数据,如字符、整数和UTF字符串,将其转换为字节,并将其写入流中。
File f = new File (myFileName);
补充
选择链接标题在一个新的浏览器窗口中打开资源。
查看DataInputStream 和DataOutputStream 方法。
考虑一下创建一个名为fostream 的FileOutputStream 对象和一个名为dostream 的DataOutputStream 对象的代码。
File f = new File (myFileName);
在这样做时,代码将DataOutputStream 写到FileOutputStream 。 -fostream 。
它将一个字符串作为参数传递给writeUTF 方法,该方法将其写入输出流中。
最后,它以正确的顺序关闭这两个流。这样一来,最后创建的那个就先被关闭了。
File f = new File (myFileName);