2012-03-04 84 views
1

感謝所有關於我之前關於getlist和copy的查詢所做的建議。 我只有一個問題在這裏GetFile列表並從遠程服務器複製到本地

字符串實名=「測試」 //正在逐漸從數據庫這個值,所以這是我無論如何可以使用這樣的,而不是

弦真實姓名=「測試」//我知道我可以做像string realname =「」+ Dbvalue +「」;

我只是想知道爲什麼它不返回任何值,如果不使用「*」?

class Program 
    { 
     static void Main(string[] args) 
     { 
      var getfiles = new fileshare.Program(); 

      string realname = "*test*"; 
      foreach (var file in getfiles.GetFileList(realname)) 
      {getfiles.copytolocal(file.FullName); } 

      } 
     private FileInfo[] GetFileList(string pattern) 
     { 
      var di = new DirectoryInfo(@"\\testserv01\dev"); 
      return di.GetFiles(pattern); 
     } 
     private void copytolocal(string filename) 
     { 
      string nameonly = Path.GetFileName(filename); 
      File.Copy(filename,Path.Combine(@"c:\",nameonly)); 

     } 
     } 

在此先感謝。

回答

3

我知道這是一個有點油腔滑調,但你真的需要開始尋找你所使用的功能的文檔:http://msdn.microsoft.com/en-us/library/8he88b63.aspx

認爲原因是*是一個通配符 - 如果你使用「測試」那麼你只會檢索「測試」的完全匹配。

上面的鏈接有一些更多的例子。

+0

if(file.contains(「test」)) – Usher 2012-03-04 21:03:30

+1

在您的示例文件中是FileInfo的一個實例。 FileInfo沒有「包含」方法,請注意,我必須繼續的唯一上下文是您的帖子中的信息,因爲您提出的問題沒有意義。我會猜測你在問是否應該在由DirectoryInfo搜索返回的FileInfo []上執行第二次匹配。在這種情況下,答案是否定的 - 您應該使通配符搜索準確無誤 - 這是因爲文件系統搜索的開銷在兩種情況下都會發生,因此您不妨避免第二次匹配的開銷(和複雜性) – dice 2012-03-04 21:43:20

相關問題