浏览 2644 次
锁定老帖子 主题:java 预申请磁盘空间处理大文件
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-09
熟悉电驴和bt的你可能经常看到这些软件可以在下载文件之初就先在硬盘上建立了一个将要下载的那个文件,但其实里面的内容是空的,只是预先申请了磁盘空间,这样做的好处是可以尽可能的减少磁盘碎片,同时可以保证不会在写文件的时候因为磁盘空间不足而出错。 用java也是可以实现这样的,今天偶然在网上看到了这种方法,跟大家分享一下。
import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; public class Test { static int length = 0xFFFFFFF; public static void main(String[] args) throws Exception { MappedByteBuffer out = new RandomAccessFile("E:/test.dat", "rw").getChannel().map(FileChannel.MapMode.READ_WRITE, 0, length); for (int i = 0; i < length; i++) out.put((byte) 'x'); System.out.println("Finished writing!"); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |