2013-04-01 126 views
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"); 

我不知道它爲什麼不打開文件。任何線索?我試過various options

+0

當我運行這個,它轉換爲文件,顯示一個消息框,但不打開轉換後的文件。 –

+2

有沒有拋出異常? –

+1

你是否收到任何錯誤訊息?是創建的文件,但空白?您使用什麼操作系統?如果Windows 7或更高版本,請嘗試寫入您的用戶文件夾或調整權限以確保您可以直接寫入C:驅動器。 – someone1

回答

3

出於某種原因,您打開一個流,然後然後試圖爲它創建一個作家。

如果該文件之前並不存在,然後調用new FileStream(@"c:\xmlout.xml", FileMode.Open)將拋出一個異常...如果文件確實之前存在,那麼您將無法在打開一個作家吧以下行,因爲你仍然有文件打開閱讀。您也正在關閉finally區塊中的FileStream,但從不關閉StreamWriter,這很奇怪。

我想你可能會得到一個異常,顯示其中哪些實際上導致了問題,但是你應該刪除FileStream的聲明。

您應該使用using語句,因此你不需要一個明確的try/finally塊:

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

當然還有然後你沒有權限上創建文件的可能性文件系統的根...

+0

非常感謝您的時間。我擺脫了try/finally塊,並將其替換爲「using」。我還更改了代碼,現在StreamWriter正在關閉,並且文件實際上處於打開狀態。謝謝! –

相關問題