替代 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
,删除旧文件,将新文件重命名为旧文件的名称。
如果下划线文件系统不支持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
,删除旧文件,将新文件重命名为旧文件的名称。