簡體   English   中英

我想在 c# 中的列表視圖中獲取所有多個文件,例如“ppt、docx 和 txxt,但我一次只能獲取一個”

[英]I wanna get all multiple files in listview in c# like "ppt,docx,and txxt but i get only one at a time"

它確實有效,但不能滿足我的需要。

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");
}

GetFiles 不需要多個擴展名

你的: files = Directory.GetFiles(textBox1.Text, "*.txt,*.ppt").ToList();

會成為

String[] extensions= new String[] {"txt","ppt"};

foreach (String extension in extensions) 
  files.AddRange(Directory.GetFiles(textBox1.Text, "*."+extension));

這會給你你的結果。

除了多次調用GetfFiles ,您還可以遍歷文件一次並檢查您的擴展名:

var extentions[] = {".txt", ".ppt"};
var all_files = Directory.EnumerateFiles(@"C:\Directory");
foreach (string current_file in all_files)
{
    foreach (var ext in extensions)
    {
       if (current_file.EndsWith(ext) 
       {
          // do what you need
       }
    }
}

您還可以包含用於單步執行子目錄的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM