2012-03-04 16 views
1

getlistとコピーに関する私の以前のクエリの提案に感謝します。 私はここで一つだけ問題があるGetFileリモートサーバーからローカルサーバーへのリストとコピー

文字列の本名=「テストは」//は、DBからこの値を取得していますので、これは私のようなものではなく、

文字列本名=「テスト」/使用することができますとにかくです/私は文字列のようにすることができますrealname = "" + Dbvalue + "";

"*"を使用しないと、なぜanyvalueが返されないのだろうか?

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 - あなたは「test」を使用している場合「テスト」の完全一致のみを取得します。

上記のリンクにはいくつかの例があります。

+0

if(file.contains( "test")) – Usher

+1

あなたのサンプルファイルでは、FileInfoのインスタンスです。 FileInfoには "contains"メソッドがありません。私が続行しなければならない唯一のコンテキストは、あなたが質問している質問に基づいて、あなたの投稿の情報です。 DirectoryInfo検索によって返されるFileInfo []で2番目の一致を実行する必要があるかどうかを尋ねていると思います。その場合、答えは「いいえ」です。ワイルドカード検索を正確にする必要があります。これは、ファイルシステム検索のオーバーヘッドが両方の場合に発生するため、2番目の一致のオーバーヘッド(&複雑さ)を避けるためです。 – dice