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
– 关闭或处理流