【问题标题】:C# using filestream instead of file.copyC# 使用文件流而不是 file.copy
【发布时间】:2016-06-16 10:02:31
【问题描述】:

我正在使用 File.copy 复制一些文件。 问题是,它会异步复制文件,因此它会在继续复制一些文件的同时继续执行程序。

现在我得到了使用 filestream 而不是 file.copy 的提示。

我现在使用的代码是:(示例)

            string instdir = (@"C:\test.dll");
            string srcdir = @"C:\test1.dll";
            File.Copy(srcdir, instdir, true);

问题在于,“test.dll”值是从 xml 文件中读取的(因此要复制的文件要多得多) 复制后它应该执行一个 .exe 文件,但它会在复制所有内容之前执行该文件,这会给出错误。

有什么建议吗?

我还有下一个问题:

我有一个解决方案,这是一个单一的文件副本。

现在我也有这个了:

public static void CopyFolder(DirectoryInfo source, DirectoryInfo install)
        {
            foreach (DirectoryInfo dir in source.GetDirectories())
                CopyFolder(dir, install.CreateSubdirectory(dir.Name));
            foreach (FileInfo file in source.GetFiles())
                file.CopyTo(Path.Combine(install.FullName, file.Name), true);
        }

用于多文件复制(复制文件夹中的所有内容)

知道如何在其中使用它吗?

谢谢!

【问题讨论】:

  • thisSO问题
  • 这是一个变色龙问题。请不要发展你的问题。如果您有新问题,请提出新问题。不要改变一个定义明确的问题来问另一个问题(然后再问另一个问题?)。

标签: c# copy filestream


【解决方案1】:

所以你可以打开两个流并复制流:

using(var src = File.OpenRead(@"srcPath"))
using(var dest = File.OpenWrite(@"destPath"))
{
    src.CopyTo(dest); //blocks until finished
}

【讨论】:

  • 这会导致程序复制并在复制后继续?
  • @Dutchdeveloper : 是的,Stream.CopyTo 将阻止直到复制完成。
  • 谢谢,这太容易了。现在我需要找到一种结合使用的方法(您提供的解决方案效果很好,但我在程序中也有这个功能:P)foreach(source.GetFiles()中的FileInfo文件)(多个文件副本)
  • 你知道解决方案吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多