我似乎找不到通过Java检测碎片文件的方法。我假设文件系统部分将通过Java抽象并变得简单,但似乎无法从Google获得任何结果。
请告知如何通过Java专门读取和修复碎片文件的低级文件系统数据。
答案 0 :(得分:2)
您必须设计一个Java程序但调用Java Native Interfaces或我的偏好 - 自定义进程来执行Java之外的实际工作。所以任何解决方案都将部分取决于操作系统。虽然某些解决方案可以在多个操作系统上运行,例如linux / unix风格。
例如在Windows上可以使用http://technet.microsoft.com/en-us/sysinternals/bb897428.aspx从java程序中调用它(使用ProcessBuilder生成外部进程)
我在我的盒子上使用它,它在100%的时间都不起作用,所以你甚至可能必须有一个多策略 - 使用方法1,在try-catch中调用它,所以如果它有错误你可以尝试方法2 ...
在我的Windows笔记本电脑上调用带参数的进程:
c:/apps/win/sysinternals/Contig.exe -a -v D:/u/a.jpg
输出
Contig v1.7 - 使文件连续版权所有(C)1998-2012 Mark Russinovich Sysinternals - www.sysinternals.com
------------------------处理D:\ u \ a.jpg扫描文件......
[Cluster] Runlength [0] 2
文件大小:5603字节D:\ u \ a.jpg是1个片段 ------------------------摘要: 处理的文件数:1 平均碎片:1个frags / file
解析出来,你有部分答案。您将不得不进入每个OS API以获取碎片的更多细节。开源的碎片化代码将是一个很好的起点。他们有你想要的东西加上你可以压制的实际去碎片的额外步骤。