2016-06-16 2 views
0

File.copy를 사용하여 일부 파일을 복사하고 있습니다. 문제는 파일 비동기를 복사하여 일부 파일을 복사하면서 프로그램을 계속 복사한다는 것입니다.C# File.copy 대신 filestream 사용

이제 file.copy 대신 filestream을 사용하는 팁을 얻었습니다.

내가 지금 사용하는 코드는 다음과 같습니다 (예)

  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 질문 –

+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 (source.GetFiles()의 FileInfo 파일) (복수 파일 복사) – Dutchdeveloper