Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止文件碎片_Java_File_Fragmentation - Fatal编程技术网

Java 防止文件碎片

Java 防止文件碎片,java,file,fragmentation,Java,File,Fragmentation,我的驱动器出现碎片问题。我有一个程序,可以在不同的文件夹中生成50000多个文件,每个文件都会随着时间的推移而增长。每个文件的大小约为500MB,我需要快速读取文件。 我面临的问题是,每个文件都将分布在驱动器上,碎片整理将花费4周以上的时间 我听说有一个文件系统,它会将每个文件分散在驱动器上,这样每个文件之间的间隔都是相同的sice。我在互联网上搜索了那个文件系统,但什么也没找到 我的程序是用Java编写的,也许有一种方法可以在驱动器上的特定字节位置设置文件的开头 如果有人能帮助我面对这个问题,

我的驱动器出现碎片问题。我有一个程序,可以在不同的文件夹中生成50000多个文件,每个文件都会随着时间的推移而增长。每个文件的大小约为500MB,我需要快速读取文件。 我面临的问题是,每个文件都将分布在驱动器上,碎片整理将花费4周以上的时间

我听说有一个文件系统,它会将每个文件分散在驱动器上,这样每个文件之间的间隔都是相同的sice。我在互联网上搜索了那个文件系统,但什么也没找到

我的程序是用Java编写的,也许有一种方法可以在驱动器上的特定字节位置设置文件的开头

如果有人能帮助我面对这个问题,我会很高兴

我听说有一个文件系统,它会将每个文件分散在驱动器上,这样每个文件之间的间距就相同了。我在互联网上搜索了那个文件系统,但什么也没找到

很可能你没有,因为它不存在


但是我们有RAID系统(廉价磁盘的快速阵列),可以减轻您的痛苦…

正如Timothy所说,使用Java无法达到这一水平

我也没听说过这个文件系统,不过它没有太多的逻辑


也许,在存储文本的情况下,可以使用以二进制大小存储数据的NoSQL数据库(如MongoDB)。可能您会获得很好的速度,Java连接器也很容易使用。

使用像ext4这样的Linux文件系统,其中磁盘碎片非常少,但也要确保您还有足够的磁盘空间,否则碎片会发生。

我也不知道有哪种文件系统可以做到这一点。不过,我有一些信息可能会有所帮助-

如果您使用的是SSD,那么出于读取性能的原因,碎片问题就不那么重要了。SSD以块的形式存储数据,例如NAND闪存页,16 KB。由于使用了磨损均衡算法,这些数据总是以分散的顺序存储。这与硬盘在实际中的工作方式非常不同。SSD上的页面也以非常并行的方式访问。因此,使用SSD时,碎片对读取性能的影响要小得多。碎片化仍然会对写入/删除造成一定的惩罚


正如Timothy提到的那样,RAID还允许更高的读取性能。

使用Java对此无能为力。事实上,Java是为了让程序员远离这些依赖于系统的东西。