C# Directory.GetFiles() 只在列表中显示一个文件

本文关键字:显示 文件 一个 Directory GetFiles 列表 | 更新日期: 2023-09-27 18:31:31

我正在尝试学习C#,我从一些简单的东西开始。

我正在尝试创建一个简单的程序,该程序将读取目录中.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;
            }
        }
    }

C# Directory.GetFiles() 只在列表中显示一个文件

> 过滤文件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();
            //}
        }   

我认为可能是由以下行引起的: this.richTextBox1.Text = filename.ToString();

您基本上每次都会覆盖文本框的文本,导致仅将最后一个文件名写入richtextbox。您应该将文件名字符串附加到richTextBox而不是分配。

快速

浏览一下,我认为您的问题就在这里:

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

您正在为具有最后一个循环迭代的 Text 属性分配,而不是为每个文件追加一个新行。

尝试调试 for 循环,您是否有多个迭代?

因为需要 xls 文件,所以请更新以下行:

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

您可能在编辑框中看到一个文件。因此,请更新该行:

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