-1

コンピューター全体を除外して、.sto ファイルのみを検索する必要がありました。これらのファイルをリストボックスに表示したい。「text.sto」のように表示する必要があります。Visual C# Express を使用しています。それ、どうやったら出来るの?

4

2 に答える 2

2

コード ファイルの先頭に次の using ディレクティブがあることを確認してください。

using System.IO;

次の方法でディレクトリを取得します。

string[] dirs = Directory.GetFiles(@"c:\", "*.sto", SearchOption.AllDirectories);

結果をフィルタリングできるようにする 2 番目のパラメーターが必要です。メソッドの詳細については、http: //msdn.microsoft.com/en-us/library/ms143316.aspxを参照してください。

これに組み込みの.Net関数を使用したくない場合(アクセスエラーをスローして結果を返さない可能性があるため)、別の方法で実行することを示す質問への回答を次に示します: https://stackoverflow.com /a/929418/184746

前述の記事を参照すると、*.sto に追加されたフィルタリングを使用してエラーをキャッチし、エラーを発生させないメソッドを次に示します。

public static IEnumerable<string> GetFiles(string path)
{
    Queue<string> queue = new Queue<string>();
    queue.Enqueue(path);
    while (queue.Count > 0)
    {
        path = queue.Dequeue();
        try
        {
            foreach (string subDir in Directory.GetDirectories(path))
            {
                queue.Enqueue(subDir);
            }
        }
        catch (Exception ex)
        {
            Console.Error.WriteLine(ex);
        }
        string[] files = null;
        try
        {
            files = (from f in Directory.GetFiles(path)
                     where f.EndsWith(".sto")
                     select f).ToArray();
        }
        catch (Exception ex)
        {
            Console.Error.WriteLine(ex);
        }
        if (files != null)
        {
            foreach (string t in files)
            {
                yield return t;
            }
        }
    }
}

次のように使用できます。

string[] dirs = GetFiles(@"c:\").ToArray();

その後、デザイナーでリストボックスを作成し、反復してアイテムを追加します

foreach(var f in dirs)
{
    listBox1.Items.Add(String.Format("\"{0}\"", f));
}

好奇心から、これを調査するときの検索パラメーターは何でしたか? 簡単な Google 検索で必要なものがすべて表示されるため: "get list of files C#"https://www.google.ca/search?sourceid=chrome&ie=UTF-8&q=get+list+of+files+C%23

于 2012-05-16T16:52:54.457 に答える
0

ファイルを検索するための1つの解決策stoですが、どれだけ速いかはわかりません

string[] filePaths = Directory.GetFiles(@"c:\", 
                         "*.sto", 
                         SearchOption.AllDirectories);
于 2012-05-16T16:53:09.673 に答える