C#Streamwriter的帮助

嘿伙计们,我需要一点帮助。 我需要我的streamwriter来从Directory.Getfiles调用中获取文件名

string lines = (listBox1.Items.ToString()); string sourcefolder1 = textBox1.Text; string destinationfolder = (@"C:\annqcfiles"); string[] files = Directory.GetFiles(sourcefolder1, lines + "*.ann"); foreach (string listBoxItem in listBox1.Items) { Directory.GetFiles(sourcefolder1, listBoxItem + "*.txt"); StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt"); } 

它完美地创建文件,它不会向文件添加任何内容。 我真正想要的是它在getfiles结果中找到的文件的文件名。

感谢您的任何建议。

  foreach (string listBoxItem in listBox1.Items) { using (StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt")) { foreach (string fileName in Directory.GetFiles(sourcefolder1, listBoxItem + "*.txt")) { output.WriteLine(fileName); } } } 

由于GetFiles返回一个string[] ,所以根本不要使用StreamWriter

 File.WriteAllLines(path, files); 

其中files是要写入的路径的string[]path是目标文件。

两件事情。 首先,您实际上需要将数据写入StreamWriter,其次,您需要确保关闭StreamWriter,以便实际将其刷新到文件中。

试试这个:

 foreach (string listBoxItem in listBox1.Items) { String[] filesInFolder Directory.GetFiles(sourcefolder1, listBoxItem + "*.txt"); using(StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt")) { foreach(string filename in filesInFolder) { output.Write(filename); } } } 

using语句确保在执行超出using块时关闭StreamWriter。

或者,如果您正在写入文件,则可以查看Files.WriteAllLines(…)方法。

您应该将您的streamwriter包装在using语句中,该语句将刷新并关闭该streamwriter

 using(StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt")) { //Any code that writes in output } 

您必须关闭StreamWriter.

或者将StreamWriter包装在using语句中,这将自动处理和关闭您的流。
这背后的原因是您的流将输出保存在缓冲区中,并在以下情况下将其写入文件:
– 达到某个阈值
– 你明确地调用flush
– 关闭或处理流