繁体   English   中英

替代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或其他类中没有方法。 “最简单”的方法是创建一个新文件,将原始数据复制到该文件,直到达到destSize ,删除旧文件并将新文件重命名为旧文件的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM