DataOutput接口定义了用于二进制格式写数组、字符、boolean值和字符串的方法。writeChars,writeByte,writeInt,writeShort,writeLong,writeFloat,writeDouble,writeChar,writeBoolean,writeUTF。
注意:
(1)writeInt总是将一个整数写出为4字节的二进制数量值,而不管它有多少位,writeDouble总是将一个double值写出为8字节的二进制数量值,这样产生的结果不可读,但是对于给定类型的每个值,所需空间相同,读回也比解析文本要快。
(2)writeUTF方法使用修订版的8位Unicode转换格式写出字符串,与直接使用标准的UTF-8编码方式不同,因为没有其他方法会使用修订本的UTF-8,所以只在写出用于Java虚拟机的字符串时才使用writeUTF方法。其他的目的都应该使用writeChars方法。
读回数据时使用DataInput接口,readInt,readShort,readLong,readFloat,readDouble,readChar,readBoolean,readUTF
DataOutputStream和DataInputStream类分别实现了DataOut和DataInput接口,通过与字节源组合使用。
e.g.DataInputStream与FileInputStream组合
DataOutputStream out = new DataOutputStream(new FileOutputStream("text.txt"));
DataInputStream in = new DataInputStream(new FileInputStream("text.txt"));
随机方法文件RandomAccessFile
RandomAccessFile类可以在文件中的任何位置查找或写入数据。磁盘文件都是随机访问的,但是网络来的数据流不是。
(1)通过使用字符串"r"(用于读入访问)或"rw"(用于读入/写出访问)作为构造第二个参数来指定这个选项。
RandomAccessFile in = new RandomAccessFile("test.txt", "r");
RandomAccessFile inOut = new RandomAccessFile("test.txt", "rw");
(2)随机访问文件有一个表示下一个将被读入或写出的字节所处位置的文件指针。
seek方法可以将这个文件指针设置到文件内部的任意字节位置,seek的参数是一个long类型的整数,它的值位于0到文件按照字节来度量的长度之间。
(3)getFilePointer方法将返回文件指针的当前位置。
(4)RandomAccessFile类同时实现了DataInput和DataOutput接口,所以可以使用readInt/writeInt之类的方法。