2013-07-25 24 views
-2

我有這樣的代碼:如何複製任何延伸的文件名?

private void GetHostsFile() 
     { 
      string Windows_95_98_Me = @"c:\windows\hosts"; 
      string Windows_NT_2000_XP_Pro = @"c:\winnt\system32\drivers\etc\hosts"; 
      string Windows_XP_Home = @"c:\windows\system32\drivers\etc\hosts"; 
      string Windows8 = @"C:\windows\system32\drivers\etc\hosts"; 

      string fileName = "hosts"; 

      if (Directory.Exists(Windows_95_98_Me)) 
      { 
       File.Copy(test1,test2, true); 
      } 
     } 

我想該文件的「主機」複製到一個新的位置。 但有時該文件可能只有主機或hosts.txt,所以我想覆蓋所有選項,只需複製一些東西像主機*。*

我該怎麼做,而不是test1和test2?

+0

燦你用系統調用來做副本?這將(容易)考慮到*符號。 – Jiminion

+0

[C#複製帶有通配符並保留文件名的多個文件]的可能重複(http://stackoverflow.com/questions/1835578/c-sharp-copying-multiple-files-with-wildcards-and-keeping-file-names ) – Damith

回答

2

我會使用Directory.GetFiles與搜索模板類似「hosts *。*」,然後將所有找到的文件複製到另一個目錄。

喜歡的東西

string sourceDirectory = @"D:\"; 
string destinationDirectory = @"D:\Test"; 
List<string> fileNames = new List<string>(Directory.GetFiles(sourceDirectory, "hosts*.*")); 

for (int iFile = 0; iFile < fileNames.Count; iFile++) 
{ 
    string fileName = fileNames[iFile]; 
    File.Copy(fileName, Path.Combine(destinationDirectory,Path.GetFileName(fileName))); 
} 

又見

Path.Combine Method (String, String)

Path.GetFileName Method

1

您可以使用類似:

string[] files = System.IO.Directory.GetFiles(Windows_95_98_Me, "host*.*"); 

foreach (string s in files) { 
    System.IO.File.Copy(s, System.IO.Path.Combine(targetPath, System.IO.Path.GetFileName(s)), true); 
}