2012-10-10 65 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。但仍面临同样的问题 –