替代 RandomAccessFile.setLength()

Alternative to RandomAccessFile.setLength()

如果下划线文件系统不支持RandomAccessFile.setLength(..)操作,Java中是否有等效的文件操作,例如写入空内容直到一定大小?

提前致谢。

增加大小可以非常简单地完成:

File file = new File(filename);
long destSize = 1000000;
long orgSize = file.length();
if (destiSize > orgSize) {
    long diff = destSize - orgSize;
    try (FileOutputStream fos = new FileOutputStream(file, true)) {
        byte[] buf = new byte[4096];
        while (diff > 0) {
            int len = (int) Math.min(buf.length, diff);
            fos.write(buf, 0, len);
            diff -= len;
        }
    }
}

截断更难,因为 RandomAccessFile 或其他 类 中没有方法,我知道。 "simplest"的做法是新建一个文件,将原来的数据复制到里面,直到destSize,删除旧文件,将新文件重命名为旧文件的名称。