gpt4 book ai didi

java - FileOutputStream 正在将文件大小减小到 0

转载 作者:行者123 更新时间:2023-11-30 09:16:07 31 4
gpt4 key购买 nike

我使用 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();
}

}

}

最佳答案

看起来你的文件正在改变大小,因为你在创建模式下打开文件,所以以前的内容丢失了

fileOutput = new FileOutputStream(f);

尝试以 append 模式打开文件,在构建 FileOutputStream 时使用额外的 boolean 标志

fileOutput = new FileOutputStream(f, true);

关于java - FileOutputStream 正在将文件大小减小到 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542636/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com