注意:它不是重复的,因为我们不仅要写对象,还要写整个文件,然后再读回来。
我使用File
,
ObjectOutputStream
String
String
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
所以阅读&amp;同时使用32KB字节缓冲技术写入大File
个流。Object
分别写在一个文件中吗?正确?Object
到ObjectInputStream
来自"abcd.dat" File
? 请帮忙。
答案 0 :(得分:2)
我创建了一个包含3个单个对象的文件
没有。您已经创建了一个带有 no 对象和大量字节的文件,无法确定一个字节序列停止的位置和另一个字节序列的开始。使用writeObject(),
并使用readObject()
阅读。你拥有它的方式,根本没有使用ObjectOutputStream
。
注意:附加到此文件将无效。有关原因,请参阅here。