我想将一些文件复制到一堆其他路径,所以我这样做:
File.Copy(instancePath, destPath);
但问题是File.Copy太慢了(我假设它完全复制文件)。此外,我不需要更改目标文件,因此它是只读引用,但可以在复制完成后随时删除源。
除了手动复制整个内容以进行只读操作外,没有其他方法吗?
PS
文件非常大(> 1gb),因此将其复制到10个地方只是为了阅读 - 太贵了。
答案 0 :(得分:3)
您不能复制该文件。您创建了一个指向该文件的硬链接。
我们倾向于将文件视为存储设备上的原子实体。这种观点是错误的。文件包含多个部分,元数据和内容。
在Windows中,一般来说,每个文件内容只有一组元数据(inode)。但是使用NTFS,很有可能创建多个inode,从而可以在多个位置访问该文件。
NTFS将跟踪每个文件有多少inode,并且只会在没有任何inode的文件上进行垃圾收集。因此,您的写入过程可以删除它的文件inode,而不会影响您的读取过程,如果您读取过程可以创建到原始文件的硬链接。
创建硬链接的过程非常快,因为它只需要写几个数据库。