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

时间:2012-06-15 11:15:21

标签: c#

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

代码:

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();
}

我很感激你的帮助。

6 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果没有创建文件(即它不存在,即使它只是空白),那么问题在于流编写器。如果是这种情况,我会建议改变斜线的方向,以便你的路径是

TextWriter tw1 = new StreamWriter("C:\\Users\\a370890\\Documents\\Filereader m 15062012\\Filereader m 15062012\\listoffiles.txt");

如果创建了文件但没有写入任何内容,请查看flush命令。

tw1.Flush();

答案 2 :(得分:0)

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

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

tw1.WriteLine(name)上设置一个断点并确保它被击中。

看到这个问题应该很容易。我的猜测是你只是没有从GetFiles返回任何文件,但断点会告诉你肯定的。如果您的输出文件已创建但缺少文件 - 很可能就是这种情况。

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

答案 3 :(得分:0)

  

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

     

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

答案 4 :(得分:0)

我会说你的文件夹路径中的“空间”搞砸了。按照msdn

中的解释尝试逃避“空白”

答案 5 :(得分:0)

尝试一下:

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);
    }
}