将文件夹中的文件列表写入 Afile
本文关键字:Afile 列表 文件 文件夹 | 更新日期: 2023-09-27 18:37:23
我写了一个代码来读取文件夹中的所有文件,然后将它们写入文件。所有代码都符合并运行正常,但文件的文件名不会显示在新文件中。
法典:
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();
}
我将不胜感激你的帮助。
您不厌其烦地询问用户文件夹位置,但未检索该文件夹位置。代码应该是
string[] array1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.csv");
// Display all files.
TextWriter tw1 = new StreamWriter(folderBrowserDialog1.SelectedPath+"/listoffiles.txt");
如果未创建文件(即它只是不存在,即使它只是空白),那么您的问题出在流编写器上。如果是这种情况,我建议更改斜杠的方向,以便您的路径
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返回任何文件,但是断点肯定会告诉您。 如果您的输出文件已创建但缺少文件 - 很可能是这种情况。
如果您的输出文件不存在;请仔细查看您的文件编写代码。
我会说你的文件夹路径中的"空间"把事情搞砸了。尝试按照 msdn 中的说明转义"空格"
我认为问题出在您的文件路径或文件写入能力上。
您使用文件夹浏览器对话框,但不使用它来获取所选文件 名字。相反,您可以手动提供路径。您的输出路径也可以具有 问题。
试试这个:
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);
}
}