c# - 关闭或删除处于打开模式的文件

标签 c# file

我正在通过下面的代码编写一个 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();
    }

之后,我将打开该文件进行审核。现在,文件处于打开模式。

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

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

最佳答案

您应该将 StreamWriter 包装在 using 语句中以确保它已被释放。

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

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

}

关于c# - 关闭或删除处于打开模式的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272414/

相关文章:

c# - 有没有办法强制将 Azure CDN 文件作为浏览器附件下载?

c# - 在 Spritekit 中固定大小

python - matplotlib 中的气泡图或热图

c++ - 如何知道写入文件何时完成?

c# - 可以增强十字光标吗?

c# - 字段和属性如何关联?

perl - 如何打印到 Perl 中的变量?

c++ - 如何使用 fscanf_s 从文件中获取字符串?

java - 为什么建议将 BufferedWriter 包裹在 write() 操作可能很昂贵的任何 Writer 周围,例如 FileWriters 和 OutputStreamWriters?

c# - 如何获取数字列的确切类型,包括。规模和精度?