java预分配 磁盘_java – 为文件存储预分配驱动器空间

@H_301_1@是否有Java方法为应用程序中的独占使用预先分配驱动器空间?

@H_301_1@不要求此空间是单独的文件系统或现有文件系统的一部分(因此很容易成为数据库),但它应该允许保留指定的空间量并允许随机读取/写入具有足够高的吞吐量.

最佳答案

您可以尝试使用RandomAccessFile对象并使用setLength()方法.

@H_301_1@例:

@H_301_1@

File file = ... //Create a temporary file on the filesystem your trying to reserve.

long bytes = ... //number of bytes you want to reserve.

RandomAccessFile rf = null;

try{

rf = new RandomAccessFile(file,"rw"); //rw stands for open in read/write mode.

rf.setLength(bytes); //This will cause java to "reserve" memory for your application by inflating/truncating the file to the specific size.

//Do whatever you want with the space here...

}catch(IOException ex){

//Handle this...

}finally{

if(rf != null){

try{

rf.close(); //Lets be nice and tidy here.

}catch(IOException ioex){

//Handle this if you want...

}

}

}

@H_301_1@注意:在创建RandomAccessFile对象之前,该文件必须存在.

@H_301_1@然后可以使用RandomAccessFile对象读取/写入文件.确保目标文件系统有足够的可用空间.空间可能不是“独占”,但您可以随时使用文件锁来执行此操作.

@H_301_1@P.S:如果您最终意识到硬盘驱动器速度慢且无用(或者从一开始就意味着使用RAM),您可以使用java.nio中的ByteBuffer对象. allocate()和allocateDirect()方法应该足够了.字节缓冲区将被分配到RAM(和可能的SwapFile)中,并且将独占于此java程序.可以通过改变缓冲区的位置来进行随机访问.由于这些缓冲区使用有符号整数来引用位置,因此最大大小限制为2 ^ 31 – 1.

@H_301_1@阅读RandomAccessFile here的更多信息.

@H_301_1@阅读FileLock(java对象)here的更多内容.

@H_301_1@阅读更多关于ByteBuffer here的信息.

相关文章

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值