2012-03-01 7 views
1

私はユーザーが特定のフォルダに移動するフォームを持っています。彼らが移動するフォルダには、その中に多数のフォルダがあり、いくつかのレベルのフォルダ内に "file.zip"という名前のzipファイルがあります。これは、その中に "file.zip"というフォルダがたくさんあることを意味します。私はこれらのすべての "file.zip"ファイルに対して、選択したフォルダをスキャンしたいと思います。私は最終的には、0kbのサイズを持つか、または空の "file.zip"ファイルのみを探しています。ファイル名や拡張子に基づいてフォルダのすべてのファイルサイズを取得するにはどうすればよいですか?

string[] files = Directory.GetFiles(txtbxOldFolder.Text) 
         .Select(f => Path.GetFiles(f)) 
         .ToArray(); 

しかし、私は、後に任意のジップのディレクトリのリストを作成することができますので、私はまた、彼らのそれぞれのサイズが必要になります。私は、このような親フォルダ内のファイルのリストを返すためにLINQを使用する必要がありますことを想像します空のファイルまたは0kbのサイズを示すファイル。私はおそらく、ディレクトリと名前(file.zip)に基づいて各ファイルのサイズを返す方法があると思っているので、後で配列を調べて、それらのfile.zipsのディレクトリのログを作成することができます空である/ 0kbのサイズを有する。

答えて

2
var directory = @"c:\myfolder"; 
var files = Directory.GetFiles(directory, "file.zip", SearchOption.AllDirectories) 
.Select(name => new FileInfo(name)) 
.Where(f => f.Length == 0).ToArray(); 
+0

私はvar呼び出しを誤解しない限り、実際に配列に書き込むようには見えないので、これが動作するかどうかを確認する方法は不明です。この情報をログファイルに書き込んで開く必要があります。ここで私がどのようにしているのか、ここで私が得ていることがあります。 File.WriteAllText(folderLog、files.ToString()); "System.IO.FileInfo []"がログに表示されますか? –

+0

files変数には、 "fileInfo"というタイプのオブジェクトの配列が含まれています。これらのオブジェクトは "file.zip"という名前で、フォルダ内の長さはゼロです。いずれかを開くには、FileInfo.Open()、FileInfo.OpenRead()またはFileInfo.OpenText()を使用します。 FullNameには、ファイルへのフルパスが含まれています。 FileInfo.Lengthにはファイルの長さが含まれます。 –

関連する問題