将文件写入随机不连续的硬盘位置
Posted
技术标签:
【中文标题】将文件写入随机不连续的硬盘位置【英文标题】:Write files into randomly non-contiguous hard disk positions 【发布时间】:2013-07-05 16:57:08 【问题描述】:我需要对我的程序做一些性能测试,并且我需要评估一些存储在文件中的数据的最差 IO 访问时间,所以我认为最好的评估方法是将这些数据随机存储到不同的 HD 扇区中为了避免连续的数据访问和缓存改进。我认为做到这一点的唯一方法是使用一些低级操作系统命令,例如 UNIX 中的 dd ,您可以在其中指定写入数据的扇区,但如果我没记错的话,这是一种不安全的方法。有人知道这样做的好方法吗?
PS:任何操作系统的任何解决方案都可以工作,唯一的要求是我必须对不同的数据大小进行测试,通过 JAVA 程序访问数据。
【问题讨论】:
【参考方案1】:我认为这样做的唯一方法是使用一些低级操作系统命令
没有...RandomAccessFile
has .seek()
:
final RandomAccessFile f = new RandomAccessFile(someFile, "rw");
f.seek(someRandomLong);
f.write(...);
现在,您当然要确保写入不会相互冲突。
另一种解决方案是将文件映射到内存中,并在写入之前将缓冲区的位置设置为某个随机位置。
【讨论】:
谢谢,我没有看“偏移量可能设置在文件末尾之外。设置偏移量超出文件末尾不会改变文件长度。”部分:P 我现在就试试! 好吧,只要你从那个偏移量开始和写入,文件长度就会改变;)在 Java 中创建稀疏文件是可能的;)以上是关于将文件写入随机不连续的硬盘位置的主要内容,如果未能解决你的问题,请参考以下文章