我使用预先分配的大小RandomAccessFile
创建了一个文件。但是当我使用FileOutputStream
写入相同内容时,它正在改变文件的大小。有没有办法使用FileOutputStream
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.RandomAccessFile;
import java.io.Serializable;
public class testFileSize {
public static class Status implements Serializable {
}
public static void preAllocate(String path, long maxSize, boolean preAllocate)
throws IOException {
RandomAccessFile raf = new RandomAccessFile(path, "rw");
try {
raf.setLength(maxSize);
} finally {
raf.close();
}
}
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
FileOutputStream fileOutput = null;
ObjectOutputStream objectOutput = null;
try {
final File f = new File("/tmp/test.bin");
preBlow(f.getAbsolutePath(), 2048, false);
Status s = new Status();
fileOutput = new FileOutputStream(f);
objectOutput = new ObjectOutputStream(fileOutput);
objectOutput.writeObject(new Status());
objectOutput.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
objectOutput.close();
fileOutput.close();
}
}
}
答案 0 :(得分:2)
看起来您的文件正在改变大小,因为您在创建模式下打开文件,因此以前的内容丢失了
fileOutput = new FileOutputStream(f);
尝试在append
模式下打开文件,在构建FileOutputStream时使用额外的boolean
标记
fileOutput = new FileOutputStream(f, true);