当资源管理器复制文件时,复制过程中产生的数据存储在哪里?

当资源管理器复制文件时,复制过程中产生的数据存储在哪里?

当我使用 Windows 7 中的资源管理器复制大型文件时,生成的文件显示为空,直到复制过程完成。我在哪里可以找到到目前为止复制的文件的内容?

答案1

我可以在哪里找到迄今为止复制的文件的内容?

在文件中。微软在多个操作系统中从 MS-DOS 中保留下来的更疯狂的行为之一是文件元数据(特别是时间戳、属性和大小信息)在关闭文件的打开句柄或对打开的文件句柄进行刷新调用之前不会更新(默认情况下,写入文件的程序没有设置特殊标志来修改此行为)。

这对 Unix 和 Linux 用户来说尤其令人困惑。在这些操作系统上,i 节点的内存副本始终包含当前文件大小,即使 i 节点尚未写入磁盘,这也是stat()/fstat()将返回的内容,因此 (长格式) 目录列表将显示的内容。

在 Windows NT 上,FindFirstFile()et al. 返回的内容不会改变直到文件的句柄要么被关闭,要么被刷新。在复制操作期间,这通常意味着复制过程用于写入目标文件的文件句柄在操作结束时被关闭。但是,只需在复制过程进行时再次打开和关闭文件,就可以强制更新元数据。

答案2

如果您在目标处看到一个空文件,则表示复制的内容已经消失。

Windows 资源管理器将创建目标文件以供写入,但如果进程中断,它将不会提交任何更改。目标文件应该被自动删除,但有时系统可能会在执行此操作之前失败。

如果您想要可恢复的副本,请使用第三方复制处理程序。

答案3

如果 Explorer 在同一文件系统上的两个位置之间进行复制,根据我的经验一直复制到目标文件,但文件大小显示并不总是更新。您是否尝试过打开 CMD 窗口并输入几次 DIR?

根据我的经验,在两个文件系统之间复制时,Explorer 文件大小似乎更新得更可靠。

相关内容