2012-05-09 3 views
2

복사기를 작성하여 openFileDialog를 사용하여 파일을 선택한 다음 folderBrowserDialog를 사용하여 복사 할 위치를 선택하도록합니다.C# .NET의 파일 복사

내가 겪고있는 문제는 File.Copy (copyFrom, copyTo)를 사용하면 예외가 발생하여 디렉토리에 복사 할 수 없다는 것입니다.

어쨌든이 문제가 발생 했나요? 아니면 바보 같은 일이 있습니다. 나는 두 위치 모두를 선택하기 위해 openFD를 사용하려고 시도했으며, 방금 folderBD를 사용하여 차이가 있는지 확인하려고했습니다.

나는 if 문이 예외를 잡아 내야한다는 것을 알고 있지만 이것이 작동하는 코드의 대략적인 초안이다.

도움을 받으려면 미리 감사드립니다.

 // Declare for use in all methods 
    public string copyFrom; 
    public string copyTo; 
    public string rootFolder = @"C:\Documents and Settings\cmolloy\My Documents"; 

    private void btnCopyFrom_Click(object sender, EventArgs e) 
    { 
     // uses a openFileDialog, openFD, to chose the file to copy 
     copyFrom = ""; 

     openFD.InitialDirectory = rootFolder; 
     openFD.FileName = ""; 

     openFD.ShowDialog(); 

     // sets copyFrom = to the file chosen from the openFD 
     copyFrom = openFD.FileName; 

     // shows it in a textbox 
     txtCopyFrom.Text = copyFrom; 
    } 

    private void btnCopyTo_Click(object sender, EventArgs e) 
    { 
     //uses folderBrowserDialog, folderBD, to chose the folder to copy to 
     copyTo = ""; 

     this.folderBD.RootFolder = System.Environment.SpecialFolder.MyDocuments; 
     this.folderBD.ShowNewFolderButton = false; 
     folderBD.ShowDialog(); 
     DialogResult result = this.folderBD.ShowDialog(); 

     // sets copyTo = to the folder chosen from folderBD 
     copyTo = this.folderBD.SelectedPath; 

     //shows it in a textbox. 
     txtCopyTo.Text = copyTo; 
    } 

    private void btnCopy_Click(object sender, EventArgs e) 
    { 
     // copys file 
     File.Copy(copyFrom, copyTo); 
     MessageBox.Show("File Copied"); 
+0

예외의 세부 사항은 무엇입니까? 또한, 디버그에서 copyTo 변수가 설정되어 있는지 확인하십시오. – Ste

답변

3

파일 이름을 디렉토리 경로에 추가해야합니다. 이 작업을 수행합니다 :

string destinationPath = Path.Combine(copyTo, Path.GetFileName(copyFrom)); 
File.Copy(copyFrom, destinationPath); 

(이 당신이 원래의 이름이 같은 다른 디렉토리로 선택된 파일을 복사 한 것 같은 파일이 이미 디렉토리에 존재하는 경우에 예외를 던질거야)

편집
사이드 참고 : 하드 코드를 소스 코드의 경로를 수행 이것을 사용 :

rootFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 

는 현재 사용자의 문서 폴더의 경로를 얻을 수 있습니다.

0

File.Copy는 파일 이름을 포함하여 원하는 새 파일의 전체 경로를 알아야합니다. 당신은 단지 동일한 파일 이름을 사용하려는 경우, 당신은 경로에 파일 이름을 추가하려면이 옵션을 사용할 수 있습니다

copyTo = Path.Combine(copyTo, Path.GetFileName(copyFrom)); 
1

이를 수행

File.Copy(copyFrom, Path.Combine(copyTo, Path.GetFileName(copyFrom)));