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