一、使用DatraOutPutStream写入数据java就能保证我们用DatraOutPutStream准确的读取数据:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
public class StoringAndRecoveringData {
public static void main(String[] args) throws IOException {
DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("E:\\1.txt")));
out.writeDouble(3.141231);
out.writeUTF("That was PI");
out.close();
DataInputStream in=new DataInputStream(new BufferedInputStream(new FileInputStream("E:\\1.txt")));
System.out.println(in.readDouble());
System.out.println(in.readUTF());
}
}
二、读写随机访问文件
import java.io.IOException;
import java.io.RandomAccessFile;
public class UsingRandomAccessFile {
static String file="E:\\1.txt";
static void display() throws IOException{
RandomAccessFile rf =new RandomAccessFile(file,"r" );
for(int i=0;i<7;i++){
System.out.println("Value "+i+":"+rf.readDouble());
}
System.out.println(rf.readUTF());
rf.close();
}
public static void main(String[] args) throws IOException{
RandomAccessFile rf=new RandomAccessFile(file, "rw");
for (int i = 0; i < 7; i++) {
rf.writeDouble(i*1.414);
}
rf.writeUTF("The end of the file");
rf.close();
display();
rf=new RandomAccessFile(file, "rw");
rf.seek(5*8);
rf.writeDouble(47.3912);
rf.close();
display();
}
}