为什么文件没有打开?

时间:2013-04-01 17:47:16

标签: c# file

我无法打开文件。

private void button1_Click(object sender, EventArgs e)
{
    // Load the CSV file
    var lines = File.ReadAllLines(@"C:\chat.csv");

    var xml = new XElement("Chat-Log",          // To convert to XML
       lines.Select(line => new XElement("Item",
          line.Split('|')                       // indicate split
          .Select((column, index) => new XElement("Column" + index, column)))));

    xml.Save(@"C:\xml-out.xml");     // Save to XML file

    MessageBox.Show("Converted to XML");

    FileStream fileStream = new FileStream(@"c:\xmlout.xml", FileMode.Open);
    try
    {
        TextWriter tw = new StreamWriter("c:\\xml-out.xml");
    }
    finally
    {
        fileStream.Close();
    }
}

上面的代码应该打开C:\xml-out.xml,对吗?

 TextWriter tw = new StreamWriter("c:\\xml-out.xml");

我不知道它为什么不打开文件。任何线索?

我尝试了various options

1 个答案:

答案 0 :(得分:3)

出于某种原因,您正在打开一个流,然后然后尝试为其创建一个编写器。

如果该文件之前不存在,那么对new FileStream(@"c:\xmlout.xml", FileMode.Open)的调用将抛出异常...如果文件之前存在,那么您将无法在下一行中打开一个编写器,因为你仍然打开文件进行阅读。您还要关闭FileStream块中的finally,但不要关闭StreamWriter,这是奇怪的。

我希望你可能有一个异常,显示其中哪些实际上导致了问题,但你当然应该删除FileStream的声明。

您应该使用using语句,这样您就不需要明确的try / finally块:

using (StreamWriter writer = File.CreateText(@"c:\xml-out.xml"))
{
}

当然然后您可能无权在文件系统的根目录上创建文件...

相关问题