0 字节的意思是:文件的名字和目录项还在,但系统找不到它的数据块。有壳没肉。
这种情况在恢复结果里很常见,尤其是删除之后又用过一段时间的那批文件。能不能补救,取决于数据块还在不在。

第一种,文件本来就没写完。复制到一半拔了U盘、下载中断、程序崩溃,这类文件的目录项建好了,数据从来没写进去。恢复出来必然是 0 字节,因为它本来就是这个状态。
第二种,数据块被覆盖。删除之后那块空间被新文件占用,索引虽然被恢复软件重建了,但指过去的位置已经是别人的数据。有的软件会老实显示 0,有的会填一堆乱码。
第三种,索引记录被复用。Windows 的 MFT 表项数量有限,删除之后表项会被新文件重新使用。恢复软件按表项扫,扫到的是新文件的信息,长度字段是 0 或者很小的值。
第一步,停止在原盘上操作。别格式化、别修复、别再导出到原盘。0 字节不代表没戏,但每一步写入都在减少机会。
第二步,换扫描策略。快速扫描走的是文件系统索引,遇到上面三种情况都会给出 0 字节。切到按文件签名扫描,它不看索引,直接在原始扇区里找数据的起始标记,按实际长度截取。
第三步,检查文件头。用十六进制工具打开前几十个字节,看到 FF D8 FF 说明是 JPEG,看到 25 50 44 46 是 PDF。如果开头就是全 0,那就是真没了。
| 成因 | 判断方法 | 能不能救 |
|---|---|---|
| 文件本来没写完 | 原文件当时就异常 | 不能,本来就没数据 |
| 数据块被覆盖 | 文件头是别的格式 | 很难,残片可试 |
| 索引记录被复用 | 大小与实际不符 | 能,换签名扫描 |
| 固态已被 TRIM | 大片同时变 0 | 不能,闪存已擦除 |

索引和内容是两套东西。索引坏了、被复用了,内容依然躺在盘上,只是没人知道它从哪开始、有多长。
签名扫描的做法是:找到起始标记,再按格式内部的结构推算出结束位置,中间的内容整段读出来。所以它能绕过索引,直接拿到数据。
代价是恢复出来的文件没有名字,也没有原来的目录结构,得靠内容和缩略图认。超级兔子数据恢复在深度扫描的结果里对 0 字节的记录做了标记,不会混在正常文件里让你一个个试;导出前还能先预览,图片和文档都能看到内容再决定要不要。有用户是批量照片显示 0 字节,切到深度扫描后重新筛了一遍,八成恢复了正常大小。

文件头全是 0,或者内容是一段重复的固定字节,说明数据区被写过或者被 TRIM 擦过,没有补救空间。
固态硬盘上出现大批 0 字节,通常就是这个原因。索引还在(因为索引也是数据,只是还没被复用),但闪存块已经被擦干净了。

先删掉那些空文件,避免后面混淆。回到软件里重新扫一遍,这次用深度扫描,导出到另一个盘。
如果原来的结果列表已经关了,重新扫的成本也就是几个小时。别在已导出的空文件上做修复,那是浪费时间——文件里一个字节都没有,任何修复工具都无从下手。
不能。修复工具处理的是「有内容但结构坏了」的文件,0 字节连内容都没有,没有可修的对象。
每个文件在盘上占的位置不同,被覆盖的概率也不同。分散存放的小文件容易全军覆没,连续存放的大文件反而更完整。
不会。扫描是只读的,不写入原盘。真正会让情况变差的是往原盘导出文件、装软件、或者格式化。