Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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#_File_Stream_Filestream - Fatal编程技术网

C# 文件流移动而不是复制

C# 文件流移动而不是复制,c#,file,stream,filestream,C#,File,Stream,Filestream,我正在尝试合并两个非常大的文件(可能只有几GB)。我没有必要保留它们的原始内容,我只对结果感兴趣 我已经看到,将一个文件附加到另一个文件的最有效方法是使用 然而,正如大家所知,移动操作比复制便宜得多。如果我想在文件系统中移动文件,我会使用file.move而不是file.Copy 是否有与文件流等价的内容?或者以任何其他方式围绕该文件?我也可以使用非代码方法。否 文件系统移动操作只会更改文件的路径,这就是它的快速之处。当您试图合并两个文件时,无论如何,都没有类似的情况 最好是将第二个文件的内容附

我正在尝试合并两个非常大的文件(可能只有几GB)。我没有必要保留它们的原始内容,我只对结果感兴趣

我已经看到,将一个文件附加到另一个文件的最有效方法是使用

然而,正如大家所知,移动操作比复制便宜得多。如果我想在文件系统中移动文件,我会使用
file.move
而不是
file.Copy

是否有与文件流等价的内容?或者以任何其他方式围绕该文件?我也可以使用非代码方法。

文件系统移动操作只会更改文件的路径,这就是它的快速之处。当您试图合并两个文件时,无论如何,都没有类似的情况

最好是将第二个文件的内容附加到第一个文件中,至少可以避免复制第一个文件。这就是
FileStream.CopyTo所做的(别忘了先查找第一个文件的末尾)。

文件系统移动操作只会更改文件的路径,这就是它的快速之处。当您试图合并两个文件时,无论如何,都没有类似的情况

最好是将第二个文件的内容附加到第一个文件中,至少可以避免复制第一个文件。这就是
FileStream.CopyTo所做的(别忘了先查找第一个文件的末尾)。

文件系统中的“文件”是比流更高级的概念。当您在文件系统中执行文件操作时,有很多事情是在“幕后”发生的,您没有意识到要优化性能等等

另一方面,文件流是一种编程概念,它使您能够以更细粒度的方式处理文件。您不能简单地将一个文件流“移动”到另一个文件流;“移动”是操作系统造成的错觉,正如Luaan指出的,操作系统只是简单地更改指向文件的指针,而不是拾取文件并将其移动到驱动器上的其他位置

如果你仔细想想,那怎么可能真的有效呢?文件是存储在某些静态介质(如磁盘驱动器)中的一系列1和0。不能同时清除文件所在的1和0,并将它们写入新位置。您必须首先将1和0复制到新位置,然后在旧位置删除它们。如果操作系统真的这样做了(而不是前面提到的指针方法),它会将操作抽象出来,让用户觉得文件只是在一个步骤中被提取并移动到其他地方。

文件系统中的“文件”是比流高得多的概念。当您在文件系统中执行文件操作时,有很多事情是在“幕后”发生的,您没有意识到要优化性能等等

另一方面,文件流是一种编程概念,它使您能够以更细粒度的方式处理文件。您不能简单地将一个文件流“移动”到另一个文件流;“移动”是操作系统造成的错觉,正如Luaan指出的,操作系统只是简单地更改指向文件的指针,而不是拾取文件并将其移动到驱动器上的其他位置


如果你仔细想想,那怎么可能真的有效呢?文件是存储在某些静态介质(如磁盘驱动器)中的一系列1和0。不能同时清除文件所在的1和0,并将它们写入新位置。您必须首先将1和0复制到新位置,然后在旧位置删除它们。如果操作系统真的是这样做的(而不是前面提到的指针方法),它会将操作抽象出来,让用户觉得文件只是在一个步骤中被拾取并移动到其他地方。

但是您不能以流式方式(逐字节)删除文件,那个么这个移动实际上应该做什么呢?但你们不能以流的方式(逐字节)删除文件,那个么这个移动实际上应该做什么呢?好吧,若你们有文件系统对齐的文件,理论上你们可以把这个文件看作是由这两个部分组成的碎片文件。但是不,只是不要。不,不,如果你有与文件系统一致的文件,理论上你可以把这个文件看作是一个由这两个部分组成的碎片文件。但是不,只是不要。不,不。