【发布时间】:2009-04-10 06:14:32
【问题描述】:
事实:
当文件被移动时,有两种可能:
- 源文件和目标文件在同一个分区,只更新文件系统索引
- 源和目标位于两个不同的文件系统上,文件需要逐字节移动。 (又名移动复制)
问题:
如何确定文件是逻辑移动还是物理移动?
我正在传输大文件(700 多兆),并且会针对每种情况采取不同的行为。
编辑:
我已经编写了一个带有工作线程的移动文件对话框,该线程执行阻塞 io 调用以一次复制一个文件。它向用户提供信息,例如粗略估计剩余时间和传输速率。
问题是:我如何知道文件是否可以在尝试物理移动之前进行逻辑移动?
【问题讨论】:
-
您错误地假设文件在同一分区上移动仅仅是元数据的更改。在 NTFS 上不一定如此。将文件移入或移出压缩目录可能会导致物理副本(解压缩)文件。同样,加密目录可能会导致物理副本(解密)文件。
-
您是对的,在同一个 NTFS 分区中可能需要进行复制/删除操作。但是,我的目标仍然是确定是否需要复制/删除或简单的元数据更改来完成移动文件的工作。公认的解决方案解决了这个问题。如果您有其他问题或其他解决方案,请随时贡献。谢谢
标签: java file-io filesystems nio