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が必要ないように、ステートメントを使用する必要があります。tryfinally

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

もちろん、ファイル システムのルートにファイルを作成する権限がない可能性もあります...

于 2013-04-01T17:51:28.393 に答える