2013-01-11 40 views
3

所有我写通过CSV文件下面的代码,关闭或删除文件,该文件是在开放模式

using(StreamWriter sw = new StreamWriter(AbsolutePathAndFileName)) 
    { 
     //write header line 
     int iColCount = TheDataTable.Columns.Count; 
     for (int i = 0; i < iColCount; i++) 
     { 
      sw.Write(TheDataTable.Columns[i]); 
      if (i < iColCount - 1) 
      { 
       sw.Write(separator); 
      } 
     } 
     sw.Write(sw.NewLine); 

     //write rows 
     foreach (DataRow dr in TheDataTable.Rows) 
     { 
      for (int i = 0; i < iColCount; i++) 
      { 
       if (!Convert.IsDBNull(dr[i])) 
       { 
        string data = dr[i].ToString(); 
        data = data.Replace("\"", "\\\"").Replace(",", " "); 
        sw.Write(data); 
       } 
       if (i < iColCount - 1) 
       { 
        sw.Write(separator); 
       } 
      } 
      sw.Write(sw.NewLine); 
     } 
     sw.Close(); 
    } 

之后我会打开审查该文件。现在,文件处于打开模式。

但是,当我再次重新生成该文件比它不允许我说,另一个进程正在使用文件。

有没有解决这个问题的方法?我需要删除或关闭该文件

+0

当你说“打开该文件进行审查”意味着你用记事本或其他东西打开它?如果是这样,你需要在再生之前关闭它。 – Geethanga

+0

是的,这是我问,我怎样才能关闭该文件 –

+0

你不能。您可能想要向用户建议的是生成另一个名为“.1.txt”的文件,或者将文本结果显示在可轻松更新的文本框中。 – Kye

回答

2

您应该将StreamWriter包含在using声明中以确保它被丢弃。

您是否在需要时以readOnly模式打开文件?

using (FileStream f = File.Open("c:\\software\\code.txt", FileMode.Open, FileAccess.Read, FileShare.None) 
{ 

} 
+1

'sw.Close()'不够好吗? – Gabe

+0

请检查我更新后的代码,我在使用语句中使用了StreamWriter ..仍然得到相同的响应,并使用Process.Start(fileName)打开该文件;行 –

+0

是否有任何其他想法可以杀死进程或其他东西。需要杀死特定的csv文件的进程并非所有的csv或excel文件。 –

相关问题