在Java中可以利用Serializable实现直接将已建立好的对象写入文件中,个人感觉这个用途跟手机联系人备份的文件很像,可以利用对象读写直接实现。具体代码实现如下:
import java.io.Serializable;
import java.io.*;
import java.nio.file.*;
import java.io.IOException;
//创建对象
class Junk implements Serializable {
private static java.util.Random generator = new java.util.Random();//创建随机数
//建立对象参数
private int answer;
private double[] numbers;
private String thought;
private static final long serialVersionUID = 9001L;//如果没有系统会默认创建,如果以前也有建立的对象接口但容易会有冲突
public Junk(String thought) {
this.thought = thought;
answer = 42;
numbers = new double[3 + generator.nextInt(4)];
for (int i = 0; i < numbers.length; ++i) {
numbers[i] = generator.nextDouble();
}
}
@Override
public String toString() {
StringBuffer strBuf = new StringBuffer(thought);
strBuf.append('\n').append(String.valueOf(answer));
for (int i = 0; i < numbers.length; ++i) {
strBuf.append("\nnumbers[").append(String.valueOf(i)).append("]=")
.append(numbers[i]);
}
return strBuf.toString();
}
}
public class MemoryMappedFile {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
Junk obj1 = new Junk("A green twig is easily bent.");
Junk obj2 = new Junk("A little knowledge is a dangerous thing.");
Junk obj3 = new Junk("A little knowledge is a dangerous thing.");
Path file = Paths.get(System.getProperty("user.home")).resolve(
"Beginning Java Stuff").resolve("JunkObjects.bin");
try{
Files.createDirectories(file.getParent());
}catch(IOException e){
e.printStackTrace();
System.exit(1);
}
try{
ObjectOutputStream objectOut=new ObjectOutputStream(new BufferedOutputStream(Files.newOutputStream(file)));
objectOut.writeObject(obj1);
objectOut.writeObject(obj2);//写入对象
objectOut.writeObject(obj3);
objectOut.flush();//一定要刷新缓冲池,要不不会写入文件中,只会在缓冲池内
System.out.println("\n\nobj1:\n"+obj1+"\n\nobj2:\n"+obj2+"\n\nobj3:\n"+obj3);
}catch(IOException e){
e.printStackTrace();
}
}
}
实现结果如下: