0

我似乎找不到通过 Java 检测碎片文件的方法。我假设文件系统部分将通过 Java 进行抽象和简化,但似乎无法从 Google 获得任何结果。

请告知如何通过 Java 读取低级文件系统数据,专门用于查找和修复碎片文件。

4

1 回答 1

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 正在扫描文件...

[集群] 游程 [0] 2

文件大小:5603 字节 D:\u\a.jpg 在 1 个片段中 ------------------------ 摘要:处理的文件数:1 平均碎片:1个碎片/文件

把它解析出来,你就有了部分答案。您将不得不进入每个操作系统 API 以获取更多碎片细节。开源碎片整理代码将是一个很好的起点。他们有你想要的东西加上你可以抑制的实际碎片整理的额外步骤。

于 2013-05-20T20:03:05.470 回答