Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Directory.GetFiles()是否仅显示列表中的一个文件?_C# - Fatal编程技术网

C#Directory.GetFiles()是否仅显示列表中的一个文件?

C#Directory.GetFiles()是否仅显示列表中的一个文件?,c#,C#,我正在努力学习C#,我从一些简单的东西开始 我正在尝试创建一个简单的程序,该程序将读取目录中扩展名为.XLS的所有文件。我似乎让它部分工作,但它只读取它看到的文件 我以为foreach语句会考虑到这一点,并将它们全部列出,但它似乎不起作用 如果有人能给我指出正确的方向,我会非常感激 public partial class Form1 : Form { public Form1() { InitializeComponent(); } priva

我正在努力学习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;
            }
        }
    }
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
GetFiles();
}
私有void GetFiles()
{
List Myfiles=new List();
字符串[]allFiles=System.IO.Directory
.GetFiles(@“C:\Users\Dave\Desktop\STUFF”、“**”);
如果(allFiles.Length>0)
{
尝试
{
foreach(所有文件中的字符串文件名)
{
this.richTextBox1.Text=filename.ToString();
}
}   
捕获(系统异常例外)
{
this.richTextBox1.Text=expt.Message;
}
}
}

由于需要xls文件,请更新此行:

string[] allFiles = System.IO.Directory.GetFiles(@"C:\Users\Dave\Desktop\STUFF", "*.xls");
您可能会在编辑框中看到一个文件。因此,请更新该行:

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

我想可能是这一行造成的:
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");
并将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()
,您可能想附加它或其他东西…谢谢,这很好地工作了,我会在可以的时候接受的,只是一个简单的问题,我假设您提供的方法是正确读取数组的方法?如果有帮助,那么您应该接受它。您可以使用“文件夹”对话框浏览文件夹并从那里读取路径。