C# 将文件夹中的文件列表写入文件

C# 将文件夹中的文件列表写入文件,c#,C#,我编写了一个代码来读取文件夹中的所有文件,然后将它们写入一个文件。所有代码都符合要求,运行正常,但新文件中不显示文件名。 代码: private void Form1_Load(object sender, EventArgs e) { DialogResult result = folderBrowserDialog1.ShowDialog(); // Show the dialog. // create a list to insert the data into /

我编写了一个代码来读取文件夹中的所有文件,然后将它们写入一个文件。所有代码都符合要求,运行正常,但新文件中不显示文件名。

代码:

private void Form1_Load(object sender, EventArgs e)
{
    DialogResult result = folderBrowserDialog1.ShowDialog(); // Show the dialog.
    // create a list to insert the data into
    //put all the files in the root directory into array
    string[] array1 = Directory.GetFiles(@"C:\Users\a3708906\Documents\Filereader m 15062012", "*.csv");

    // Display all files.
    TextWriter tw1 = new StreamWriter("C:/Users/a3708906/Documents/Filereader m 15062012/Filereader m 15062012/listoffiles.txt");
    List<string> filenames = new List<string>();
    tw1.WriteLine("--- Files: ---");
    foreach (string name in array1)
    {
            tw1.WriteLine(name);
    }
    tw1.Close();
}
private void Form1\u加载(对象发送方,事件参数e)
{
DialogResult=folderBrowserDialog1.ShowDialog();//显示对话框。
//创建一个列表以将数据插入其中
//将根目录中的所有文件放入数组
字符串[]array1=Directory.GetFiles(@“C:\Users\a3708906\Documents\Filereader m 15062012”,“*.csv”);
//显示所有文件。
TextWriter tw1=新的StreamWriter(“C:/Users/a3708906/Documents/Filereader m 15062012/Filereader m 15062012/listoffiles.txt”);
列表文件名=新列表();
tw1.WriteLine(“--Files:--”);
foreach(数组1中的字符串名称)
{
tw1.书面线(名称);
}
tw1.Close();
}
我将非常感谢你的帮助

如果文件没有创建(即它不在那里,即使它只是空白),那么问题就出在流编写器上。如果是这样的话,我建议改变斜线的方向,这样你的路径是正确的

TextWriter tw1 = new StreamWriter("C:\\Users\\a370890\\Documents\\Filereader m 15062012\\Filereader m 15062012\\listoffiles.txt");
如果文件已创建但未写入任何内容,请查看flush命令

tw1.Flush();
如果文件没有创建(即它不在那里,即使它只是空白),那么问题就出在流编写器上。如果是这样的话,我建议改变斜线的方向,这样你的路径是正确的

TextWriter tw1 = new StreamWriter("C:\\Users\\a370890\\Documents\\Filereader m 15062012\\Filereader m 15062012\\listoffiles.txt");
如果文件已创建但未写入任何内容,请查看flush命令

tw1.Flush();

设置断点以验证
GetFiles
是否返回文件

(考虑将array1重命名为更有意义的名称)

tw1.WriteLine(name)
上设置断点,并确保它被命中

应该很容易看出问题所在。我的猜测是,您根本没有从GetFiles返回任何文件,但断点会肯定地告诉您。如果您的输出文件已创建但缺少这些文件,则很可能是这种情况


如果输出文件不存在;仔细查看文件编写代码。

设置断点以验证
GetFiles
是否正在返回文件

(考虑将array1重命名为更有意义的名称)

tw1.WriteLine(name)
上设置断点,并确保它被命中

应该很容易看出问题所在。我的猜测是,您根本没有从GetFiles返回任何文件,但断点会肯定地告诉您。如果您的输出文件已创建但缺少这些文件,则很可能是这种情况

如果输出文件不存在;仔细看看您的文件编写代码

我认为问题在于您的文件路径或文件写入能力

您使用folderbrowserdialog,但不使用它来获取所选文件 名称而是手动给出路径。您的输出路径也可以有 问题

我认为问题在于您的文件路径或文件写入能力

您使用folderbrowserdialog,但不使用它来获取所选文件 名称而是手动给出路径。您的输出路径也可以有 问题


您不厌其烦地向用户询问文件夹位置,但没有检索到该文件夹位置。代码应该是

    string[] array1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.csv");

    // Display all files.
    TextWriter tw1 = new StreamWriter(folderBrowserDialog1.SelectedPath+"/listoffiles.txt");

您不厌其烦地向用户询问文件夹位置,但没有检索到该文件夹位置。代码应该是

    string[] array1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.csv");

    // Display all files.
    TextWriter tw1 = new StreamWriter(folderBrowserDialog1.SelectedPath+"/listoffiles.txt");
我想说你的折叠路径中的“空间”把事情搞砸了。试着按照

中的解释来避开“空白”,我想说你的文件夹路径中的“空白”把事情搞砸了。尝试按照中的解释来避开“空白”尝试以下操作:

using(system.IO.StreamWriter tw1 = 
      new system.IO.StreamWriter(@"C:/Users/a3708906/Documents/Filereader m 15062012/Filereader m 15062012/listoffiles.txt")
{
    foreach (string name in array1)
    {
        tw1.WriteLine(name);
    }
}
试试这个:

using(system.IO.StreamWriter tw1 = 
      new system.IO.StreamWriter(@"C:/Users/a3708906/Documents/Filereader m 15062012/Filereader m 15062012/listoffiles.txt")
{
    foreach (string name in array1)
    {
        tw1.WriteLine(name);
    }
}

有CSV文件吗?您需要文件夹浏览器对话框做什么?在array1上放置一个断点,检查其中是否有任何内容。您在哪里使用“结果”?将代码分开。首先检查是否可以获取文件名,然后检查是否可以写入文本文件。在你确定你可以同时做这两件事之后,把你的工作结合起来。有CSV文件吗?您需要文件夹浏览器对话框做什么?在array1上放置一个断点,检查其中是否有任何内容。您在哪里使用“结果”?将代码分开。首先检查是否可以获取文件名,然后检查是否可以写入文本文件。在你确定你可以同时做这两件事之后,把你的工作结合起来。