我写了一个代码来读取文件夹中的所有文件,然后将它们写入文件。所有代码都符合并运行正常,但文件的文件名不会显示在新文件中。
代码:
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();
}
我很感激你的帮助。
答案 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);
}
}