C# C Streamwriter帮助

C# C Streamwriter帮助,c#,C#,嘿,伙计们,我需要一点帮助。我需要我的streamwriter将从目录.Getfiles调用中获得的文件名更正出来 string lines = (listBox1.Items.ToString()); string sourcefolder1 = textBox1.Text; string destinationfolder = (@"C:\annqcfiles"); string[] files = Directory.GetFiles(sou

嘿,伙计们,我需要一点帮助。我需要我的streamwriter将从目录.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结果中找到的文件的文件名

感谢您的建议。

您必须关闭StreamWriter

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

因为GetFiles返回字符串[],所以根本不使用StreamWriter—只需


其中files是要写入的路径的字符串[],path是目标文件。

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

    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);
           }
     }
    }
using(StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt"))
{
    //Any code that writes in output
}

两件事。首先,您实际上需要将数据写入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


或者,如果这是您正在写入文件的全部内容,您可以查看该方法。

+1供使用。我不明白为什么在更多的例子中,更多的人没有使用这一点。我知道我不是C专业人士,但这似乎是一个不忘记关闭和处理东西的好方法。Tester101,int文件。writealxxx使用内置的这将是完美的,除了我只想要文件名当我将结果写入文本文件时,它有完整的路径+文件名,我只想要文件名这是完美的,但是如何从字符串路径中删除文件路径
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);
        }
    }
}