2012-10-10 109 views
-1

我的應用程序中有一個問題。我需要從兩個SQL查詢結果中創建兩個CSV文件。我創建了一個。我正在使用StreamWriter將數據寫入CSV文件。如何關閉StreamWriter對象

我的問題是第一個查詢結果也寫入第二個文件。我使用StreamWriter.Close(),並且在輸出中仍然看到相同的行爲。

using (StreamWriter sw = new StreamWriter(strFilePath, false)) 
{ 
    foreach (DataRow dr in dt.Rows) 
    { 
     for (int i = 0; i < iColCount; i++) 
     { 
     } 
    } 
} 
+9

你能告訴我們你的代碼嗎? –

+0

我寫了兩個文件,你應該創建兩個獨立的StreamWriters。不要重複使用。 –

+0

我需要重用該Streamwriter。是否有任何可能的方法 –

回答

1

,最好的辦法,以確保一個StreamWriter(或實際上,任何IDisposable資源)是封閉的是使用using聲明它是可能的。這裏是如何:

using (var writer = new StreamWriter(@"c:\output\file1.csv")) { 
    foreach (IDataReader row in myQueryResults) { 
     writer.WriteLine("{0},{1},{2}", row.GetString(0), row.GetString(1), row.GetString(2)); 
    } 
} 

一旦using聲明的作用域結束,通常還是通過異常,writer自動關閉。

+0

仍然我面臨同樣的問題 –

+0

你確定'其他'的電話是使用不同於@「c:\ output \ file1.csv」的文件名? – deroby

+0

我爲每個文件創建了兩個獨立的StreamWriter。但仍面臨同樣的問題 –