下边的示例展示了通过字节流写入文件, 然后再通过字节流读入, 结果保持了一致性. 这点很重要, 也就是说无论平台如何, 硬件如何, DataOutputStream输出的流都可以通过DataInputStream流正常读取.
package com.cnsuning.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class StoringAndRecoveringData {
public static void main(String[] args) {
String file = "D:\\test.txt";
try {
DataOutputStream out = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
out.writeUTF("start");
out.writeInt(11);
out.writeDouble(11.5);
out.writeBoolean(true);
out.writeUTF("end");
out.close();
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
System.out.println(in.readUTF());
System.out.println(in.readInt());
System.out.println(in.readDouble());
System.out.println(in.readBoolean());
System.out.println(in.readUTF());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
特别的, 使用writeUTF时, JAVA使用特殊的UTF编码, 对ASCII字符使用一个字节编码, 对其它字符使用2-3个字节编码, 并使用前两位字节保存字符长度, 因为JAVA对UTF编码略有改动, 使用其它程序读取JAVA编写的UTF文件时需要特殊处理.