2016-06-16 6 views
0

Я использую File.copy для копирования некоторых файлов. Проблема заключается в том, что она копирует файлы asynchronus, поэтому продолжает программу, все еще копируя некоторые файлы.C# с использованием filestream вместо 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); 
     } 

для мульти копирования файлов (скопировать все в папку)

Любая идея, как использовать его в этом?

Спасибо!

+0

Посмотрите на [это] (http://stackoverflow.com/questions/10982104/wait-until-file-is-completely-written) SO question –

+0

Это становится вопросом хамелеона. Пожалуйста, не меняйте свой вопрос. Если у вас есть новый вопрос, задайте новый вопрос. Не изменяйте четко заданный вопрос, чтобы задать другой вопрос (а другой после этого?). – spender

ответ

1

Таким образом, вы можете открыть два потока и скопировать потоки:

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

Это приведет к копированию программы и продолжению копирования? – Dutchdeveloper

+0

@ Dutchdeveloper: Да, 'Stream.CopyTo' будет блокироваться, пока копия не будет закончена. – spender

+0

Спасибо, что было слишком легко. Теперь мне нужно найти метод для использования в сочетании с этим (решение, которое вы предоставили, отлично работает, но у меня также есть эта функция в программе: P) foreach (файл FileInfo в source.GetFiles()) (копирование нескольких файлов) – Dutchdeveloper

Смежные вопросы