0

我无法打开文件。

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");

我不知道为什么它没有打开文件。有什么线索吗?

我尝试了各种选择

4

1 回答 1

3

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

如果该文件之前不存在,那么调用new FileStream(@"c:\xmlout.xml", FileMode.Open)将引发异常......如果该文件之前确实存在,那么您将无法在以下行中打开它的写入器,因为您仍然打开文件以供阅读。然后,您还关闭了FileStream块中的finally,但从不关闭StreamWriter,这很奇怪。

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

您应该使用一个using语句,这样您就不需要显式try/finally块:

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

当然,您可能没有权限在文件系统的根目录上创建文件......

于 2013-04-01T17:51:28.393 回答