Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否为只读操作复制文件?_C# - Fatal编程技术网

C# 是否为只读操作复制文件?

C# 是否为只读操作复制文件?,c#,C#,我想将一些文件复制到一组其他路径,因此我要执行以下操作: File.Copy(instancePath, destPath); 但问题是File.Copy太慢了(我假设它会完全复制文件)。另外,我不需要更改目标文件,所以它是只读引用,但在复制完成后,源文件可以随时删除 除了手动复制整个内容以进行只读操作之外,没有其他方法了吗 PS 文件非常大(>1gb),因此仅为了读取而在10个位置复制它-太贵了。您不复制文件。创建指向该文件的硬链接 我们倾向于将文件视为存储设备上的原子实体。这种观点是完全错

我想将一些文件复制到一组其他路径,因此我要执行以下操作:

File.Copy(instancePath, destPath);
但问题是File.Copy太慢了(我假设它会完全复制文件)。另外,我不需要更改目标文件,所以它是只读引用,但在复制完成后,源文件可以随时删除

除了手动复制整个内容以进行只读操作之外,没有其他方法了吗

PS


文件非常大(>1gb),因此仅为了读取而在10个位置复制它-太贵了。

您不复制文件。创建指向该文件的硬链接

我们倾向于将文件视为存储设备上的原子实体。这种观点是完全错误的。文件包括多个部分、元数据和内容

在windows中,通常每个文件内容只有一组元数据(inode)。但是,使用NTFS可以创建多个索引节点,从而使文件可以在多个位置访问

NTFS将跟踪每个文件有多少索引节点,并且只对没有任何索引节点的文件进行垃圾收集。因此,如果读取进程可以创建指向原始文件的硬链接,则写入进程可以删除文件的inode,而不会影响读取进程


创建硬链接的过程非常快,因为它只需要写入几kB的数据。

您不需要复制文件。创建指向该文件的硬链接

我们倾向于将文件视为存储设备上的原子实体。这种观点是完全错误的。文件包括多个部分、元数据和内容

在windows中,通常每个文件内容只有一组元数据(inode)。但是,使用NTFS可以创建多个索引节点,从而使文件可以在多个位置访问

NTFS将跟踪每个文件有多少索引节点,并且只对没有任何索引节点的文件进行垃圾收集。因此,如果读取进程可以创建指向原始文件的硬链接,则写入进程可以删除文件的inode,而不会影响读取进程


创建硬链接的过程非常快,因为它只需要写入几kB的数据。

如果源文件可能随时被删除,我认为不可能有任何其他方法。不清楚您在问什么。您不能复制文件“仅用于读取”。如果你需要复制它,你必须完全复制它,或者在内存中读取它。如果你想要一个真正的副本,当然,整个文件都被复制了。你需要一些软链接还是硬链接?是的,我需要一些指向常量文件的链接(它的内容没有改变)。只要有引用指向它,它就会一直存在。基本上,就像.NET中的对象一样,只要需要就可以使用。@eocron:请再次阅读最后一条评论:“……不将其所有内容一次加载到内存中。”如果源文件可能随时被删除,我认为不可能有任何其他方法。不清楚您在问什么。您不能复制文件“仅用于读取”。如果你需要复制它,你必须完全复制它,或者在内存中读取它。如果你想要一个真正的副本,当然,整个文件都被复制了。你需要一些软链接还是硬链接?是的,我需要一些指向常量文件的链接(它的内容没有改变)。只要有引用指向它,它就会一直存在。基本上,就像.NET中的对象一样,只要需要就可以使用。@eocron:请再次阅读最后一条评论:“……不将其所有内容一次加载到内存中。”是的,我几分钟前使用过它,它的效果非常好!非常感谢。请原谅我的无知,我们是否在windows上手动按ctrl c,v键时创建指向该文件的硬链接?@ankit_sharma否,这会创建一个完整副本。是的,我几分钟前使用过它,效果非常好!非常感谢。请原谅我的无知,我们是否在windows上手动按ctrl c,v键时创建指向该文件的硬链接?@ankit_sharma No,这将创建完整副本。