【发布时间】:2016-01-13 18:18:25
【问题描述】:
注意:不是重复的,因为这里我们不仅要写对象,还要写整个文件,然后再读回来。
我使用 ObjectOutputStream 创建了一个带有 3 个对象的 File,
StringString-
File(大小在 [1 到 1.5]GB 之间)
以下是我用来编写File的代码
byte[] BUFFER = new byte[1024*32];
FileInputStream fis = new FileInputStream("ThisIsTheFile.xyz");
FileOutputStream fos = new FileOutputStream("abcd.dat", true);
ObjectOutputStream oos = new ObjectOutputStream(fos);
String fileId = "BSN-1516-5287B-65893", fTitle = "Emberson Booklet";
for(int i = 0; i < 3; i++){
if(i == 0){
oos.write(fileId.getBytes(), 0, fileId.length());
}else if (i == 1){
oos.write(fTitle.getBytes(), 0, fTitle.length());
}else{
InputStream is = new BufferedInputStream(fis);
int bytesRead = -1;
while((bytesRead = is.read(BUFFER)) != -1){
oos.write(BUFFER, 0, bytesRead);
}
is.close();
}
}
fileId = fTitle = null;
oos.flush();
oos.close();
fos.flush();
fos.close();
fis.close();
现在我的问题是:
- 我不想中断
Java Heap Space,所以同时使用 32KB 字节缓冲区技术读取和写入大型File流。 - 我是否将这三个
Object分别正确地写在一个文件中? - 最后但并非最不重要的一点,我应该如何从
"abcd.dat" File中检索上述所有 3 个Object到ObjectInputStream?
请帮忙。
【问题讨论】:
标签: java fileinputstream fileoutputstream objectinputstream objectoutputstream