2016-05-09 6 views
-3

拡張子がtxtの指定されたディレクトリにファイルを取得する方法があります。これらのファイルの他に、拡張子がpptdocxなどのファイルも取得したいと思います。複数の検索パターンを持つディレクトリ内のファイルを取得する

これは私の現在のコードです:

private void button2_Click(object sender, EventArgs e){ 
    listView1.Items.Clear(); 
    if (textBox1.Text != ""){ 
    List<string> files = new List<string>(); 
    files = Directory.GetFiles(textBox1.Text, "*.txt,*.ppt").ToList(); 
    progressBar1.Maximum = files.Count; 
    progressBar1.Value = 0; 
    ListViewItem it; 
    foreach (var file in files){ 
     it = new ListViewItem(file.ToString()); 
     it.SubItems.Add(System.IO.Path.GetFileName(file.ToString())); 
     it.SubItems.Add(System.IO.Path.GetExtension(file.ToString())); 
     listView1.Items.Add(it); 
     progressBar1.Increment(1); 
    } 
    } else 
    MessageBox.Show("Select directory first"); 
} 
+0

それは動作しますが、あなたの必要性をどのように完了していませんか?より具体的にするようにしてください。何を手に入れていますか?あなたの期待/必要とどのように違うのですか? – Kritner

+0

Linq:files = Directory.GetFiles( "textBox1.Text"、 "*。*")ここで、x => x.EndsWith( "。txt")|| x.EndsWith( ".ppt"))。 ToList(); – jdweng

+0

なぜあなたはこの質問を2度聞いたのですか? http://stackoverflow.com/questions/37113147/i-wanna-get-all-multiple-files-in-listview-in-c-sharp-like-ppt-docx-and-txxt-bu –

答えて

1

あなたの質問は明らかではないが、私はあなたが指定されたパスから別の拡張子を持つファイルを取得したいと理解しています。 Directory.GetFiles( "c:// etc。"、 "* .txt")は単一の検索パターン上で動作するため、これを行うことはできません。あなたはこれを使用することができます

string[] Extensions = {"*.txt", "*.doc", "*.ppt"}; 
foreach(var ext in Extensions) 
{ 
    GetFiles(ext); 
} 
private void GetFiles(string ext) 
{ 
    List<string> files = new List<string>(); 
    files = Directory.GetFiles("c:/something", ext).ToList(); 
    // Something you want to do with these files. 
} 
0
files = Directory.GetFiles(@textBox1.Text, "*.txt").ToList(); 
files.AddRange(Directory.GetFiles(@textBox1.Text, "*.docx").ToList()); 
files.AddRange(Directory.GetFiles(@textBox1.Text, "*.ppt").ToList()); 

また、あなたがtextBox1テキストボックスからパスの妥当性をチェックする検討すべきである、このような何か:

if (!Directory.Exists(@textBox1.Text)) 
{ 
    MessageBox.Show("invalid folder"); 
    return; 
} 
+0

では ' AddRange'はコレクションに何も追加されていない場合に例外をスローしますか?アカウントにそれを取ることがあります – Kritner

+0

いいえ、それは例外をスローしません。 Directory.GetFilesは、空のList コレクションを返します。コレクションは「追加」されます。しかし、 'textBox1.Text'の内容は次のようになります:) – Nino

関連する問題