2014-11-23 40 views
-1

我想學習C#,我從一些簡單的東西開始。C#Directory.GetFiles()只顯示列表中的一個文件?

我想創建一個簡單的程序,它將讀取擴展名爲.XLS的目錄中的所有文件。我似乎有部分工作,但它只讀取它看到的文件。

我認爲foreach聲明會照顧這一點,並列出所有,但似乎並不奏效。

如果有人能把我放在正確的方向,我會非常感激。

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     GetFiles(); 
    } 

    private void GetFiles() 
    { 
     List<String> Myfiles = new List<string>(); 
     string[] allFiles = System.IO.Directory 
          .GetFiles(@"C:\Users\Dave\Desktop\STUFF", "*.*"); 

     if (allFiles.Length > 0) 
     { 
      try 
      { 
       foreach (string filename in allFiles) 
       { 
        this.richTextBox1.Text = filename.ToString(); 
       } 
      } 

      catch (SystemException excpt) 
      { 
       this.richTextBox1.Text = excpt.Message; 
      } 
     } 
    } 
+1

您覆蓋文件名每次做這個時間'this.richTextBox1.Text = filename.ToString( );',你可能想追加它或什麼... – forsvarir 2014-11-23 16:21:51

回答

0

xls過濾器文件:

string[] allFiles = System.IO.Directory.GetFiles(@"C:\Users\Dave\Desktop\STUFF", "*.xls"); 

和更新try塊代碼:

try 
     { 
      this.richTextBox1.Text= string.Join(Environment.NewLine, allFiles); 
      //foreach (string filename in allFiles) 
      //{ 
      //  this.richTextBox1.Text = filename.ToString(); 

      //} 
     } 
+0

感謝這工作完美,將接受我可以,只是一個簡短的問題,我假設你提供的方式是正確讀取數組的方式? – SK2017 2014-11-23 16:30:11

+0

如果它有幫助,那麼你應該接受它。您可以使用文件夾對話框來瀏覽文件夾並從那裏讀取路徑。 – Arshad 2014-11-23 16:32:53

+0

我確實說過我會接受,當它讓我,謝謝 – SK2017 2014-11-23 16:35:59

0

因爲你想要的XLS文件,更新該行:

string[] allFiles = System.IO.Directory.GetFiles(@"C:\Users\Dave\Desktop\STUFF", "*.xls"); 

你看在編輯框中大概一個文件。因此,更新行:

this.richTextBox1.AppendText(filename + Environment.NewLine); 
0

我認爲它可能通過這條線以下原因引起: this.richTextBox1.Text = filename.ToString();

你基本上覆蓋每次文本框的文本,從而導致只有最後一個文件名被寫入richtextbox。您應該將文件名字符串追加到richTextBox而不是分配。

0

從快看,我認爲你的問題是在這裏:

this.richTextBox1.Text = filename.ToString(); 

要指定與上次循環迭代文本屬性,而不是追加爲每個文件的新線。

嘗試調試for循環,你有多個迭代?

相關問題