Java 如何分配连续磁盘空间?

Java 如何分配连续磁盘空间?,java,c++,hard-drive,Java,C++,Hard Drive,我正在开发一个可以处理大量文件的系统,并在谷歌上搜索我读到的关于提高硬盘信息检索速度的文章。但是,由于我使用Java,我找不到任何库来处理这个问题。我在C++中有非常模糊的知识,并且找到了一些关于硬盘信息检索的知识。 显然,没有办法获得具体的信息,比如我可以从硬盘上获得多少连续的空闲块,或者硬盘上有多少连续的空闲块。 我目前正在使用Windows7和XP。 我知道JNI的使用,但是我有C++的强大问题。但即使搜索C++解决方案,我也找不到任何东西。也许我在谷歌上做了一些错误的查询。 有人能给我一

我正在开发一个可以处理大量文件的系统,并在谷歌上搜索我读到的关于提高硬盘信息检索速度的文章。但是,由于我使用Java,我找不到任何库来处理这个问题。我在C++中有非常模糊的知识,并且找到了一些关于硬盘信息检索的知识。 显然,没有办法获得具体的信息,比如我可以从硬盘上获得多少连续的空闲块,或者硬盘上有多少连续的空闲块。 我目前正在使用Windows7和XP。 我知道JNI的使用,但是我有C++的强大问题。但即使搜索C++解决方案,我也找不到任何东西。也许我在谷歌上做了一些错误的查询。 有人能给我一个链接,学习建议或其他什么吗?我愿意学习C++(虽然我几乎没有空闲时间)。 多谢各位


PS编辑:我知道这实际上没有什么区别。但我真的需要了解这一点。但是感谢大家的建议。

AFAIK没有内置方式,也没有100%纯java解决方案。问题在于,检索此类信息取决于平台,而且由于Java应该是独立于平台的,所以您只能使用公共子集。

您确定了性能问题吗?如果没有,那就什么都不要做

您确定磁盘上文件的物理分布是导致此性能问题的原因吗?如果没有,那么请测量在应用程序中花费的时间,并尝试改进算法,必要时引入缓存

如果您已经完成了所有这些工作,并且确定是磁盘上文件的物理分布导致了性能问题,那么您是否考虑过购买一个更快的磁盘,或者使用多个磁盘?硬件通常比开发时间便宜得多


我非常怀疑磁盘上文件的物理分布是否会对应用程序的性能产生重大影响。我会先搜索其他地方。

Captain Kernel解释说,这不一定会提高磁盘性能,除此之外,如果不做大量的工作,就不可能实现。

NTFS已经尝试连续分配您的文件,如Windows 7工程师手册中所述。只有当没有足够大的连续可用空间块时,文件才会被分割

如果您认为文件不被碎片化很重要,那么我认为最好的选择是安排每晚对磁盘进行碎片整理。这更像是一个系统管理问题


最后,.

这远低于您应该关注的级别。您需要在Windows中从Java调用,但我不知道如何做到这一点,即使很简单,您也无法为其他平台做任何事情。这将严重依赖于文件系统,因此如果您真的需要此功能,您最好只选择一个支持的FS,ext4听起来是个不错的选择,但我知道的不多,所以不要听我说。:)如果他们认为这会优化性能,他们不是已经这样做了吗?Windows的家伙实际上比你想象的要聪明。(…虽然他们似乎不明白索引服务是一个半糟糕[和半糟糕:)]的想法。)@munto:关于附加声明:同意磁盘管理有一个要求,因为软件是关于数据管理的,所以我无法用另一种方式解决它。谢谢你的回复。优化的第一条规则是不要这样做。我目前正在寻找一个特定的操作系统解决方案,即Windows7或WindowsXP。这就是我发现IOCTL的原因。