2014-03-04 49 views
0

我正在創建一個項目來完成一些簡單的任務來幫助我的工作。在C#中複製文件問題

該應用程序正在C#中作爲Windows窗體。 除了一個問題之外,一切似乎都沒有問題,問題是將文件從共享位置複製到本地位置時,所有這些文件都不是一個。 的代碼如下:

private void Form1_Load_1(object sender, EventArgs e) 
     { 
      string fileName = "Analyst's Name.txt"; 
      string fileName1 = "Group Name.txt"; 
      string fileName2 = "KB Number.txt"; 
      string fileName3 = "Return Notes.txt"; 
      string sourcePath = @"\\remote location"; 
      string targetPath = @"C:\SUPPORT\"; 

     string sourceFile = System.IO.Path.Combine(sourcePath, fileName); 
      string sourceFile1 = System.IO.Path.Combine(sourcePath, fileName1); 
      string sourceFile2 = System.IO.Path.Combine(sourcePath, fileName2); 
      string sourceFile3 = System.IO.Path.Combine(sourcePath, fileName3); 
     string destFile = System.IO.Path.Combine(targetPath, fileName); 
      string destFile1 = System.IO.Path.Combine(targetPath, fileName1); 
      string destFile2 = System.IO.Path.Combine(targetPath, fileName2); 
      string destFile3 = System.IO.Path.Combine(targetPath, fileName3); 
     if (!System.IO.Directory.Exists(targetPath)) 
     { 
      System.IO.Directory.CreateDirectory(targetPath); 
     } 
     System.IO.File.Copy(sourceFile, destFile, true); 
      System.IO.File.Copy(sourceFile1, destFile1, true); 
      System.IO.File.Copy(sourceFile2, destFile2, true); 
      System.IO.File.Copy(sourceFile3, destFile3, true); 
     if (System.IO.Directory.Exists(sourcePath)) 
     { 
      string[] files = System.IO.Directory.GetFiles(sourcePath); 
      foreach (string s in files) 
      { 
       fileName = System.IO.Path.GetFileName(s); 
       destFile = System.IO.Path.Combine(targetPath, fileName); 
       destFile1 = System.IO.Path.Combine(targetPath, fileName1); 
       destFile2 = System.IO.Path.Combine(targetPath, fileName2); 
       destFile3 = System.IO.Path.Combine(targetPath, fileName3); 
       System.IO.File.Copy(s, destFile, true); 
       System.IO.File.Copy(s, destFile1, true); 
       System.IO.File.Copy(s, destFile2, true); 
       System.IO.File.Copy(s, destFile3, true); 

現在的問題是,收益票據文件在本地的C盤上,被複制,但其內的數據表示作爲分析師名數據,名稱該文件是正確的,但裏面的數據來自不同的文件,任何幫助將不勝感激。

+0

http://msdn.microsoft.com/en-us/library/sf0df423.aspx – Ashigore

+0

抱歉,但該方法的工作,你的意思是我要改變完全寫的方式? – user2040978

+1

你爲什麼要複製一切兩次?第二次 - 使用sourcePath中的任何內容覆蓋所有文件? – McAden

回答

1

它應該是如此簡單:

List<string> files = new List<string> 
{ 
    "Analyst's Name.txt", 
    "Group Name.txt", 
    "KB Number.txt", 
    "Return Notes.txt" 
}; 
string sourcePath = @"\\remote location"; 
string targetPath = @"C:\SUPPORT\"; 

if (!Directory.Exists(targetPath)) 
{ 
    Directory.CreateDirectory(targetPath); 
} 

for (int i = 0; i < files.Count; i++) 
{ 
    string filePath = Path.Combine(sourcePath, files[i]); 
    if (File.Exists(filePath)) 
    { 
     File.Copy(filePath, Path.Combine(targetPath, files[i]), true); 
    } 
} 
+0

非常感謝,我將需要在遙遠的位置。將通過tomnorow讓你知道。 – user2040978

+0

你甚至不需要''''你可以做'foreach(var file in files)',並且只要'file'到處有'files [i]'的地方。 –