尝试删除文件时遇到访问被拒绝的问题

3

每当我试图在 C:\inetpub\wwwroot\Project\temp\ 删除一个文件时,都会出现访问被拒绝的错误。我已经正确地 Close() 和 Dispose() 了 StreamReader,也为 NETWORK SERVICE 账户授予了完全权限。有谁能帮帮我吗?

reader = new StreamReader(path + fileName);
DataTable dt = new DataTable();
            String line = null;
            int i = 0;

            while ((line = reader.ReadLine()) != null)
            {
                String[] data = line.Split(',');
                if (data.Length > 0)
                {
                    if (i == 0)
                    {
                        dt.Columns.Add(new DataColumn());
                        foreach (object item in data)
                        {
                            DataColumn c = new DataColumn(Convert.ToString(item));
                            if (Convert.ToString(item).Contains("DATE"))
                            {
                                c.DataType = typeof(DateTime);
                            }
                            else { c.DataType = typeof(String); }
                            dt.Columns.Add(c);
                        }
                        dt.Columns.Add(new DataColumn("CreatedDate", typeof(DateTime)));
                        i++;
                    }
                    else
                    {
                        DataRow row = dt.NewRow();
                        row[0] = "";
                        for (int j = 0; j < data.Length; j++)
                        {
                            if (dt.Columns[j + 1].DataType == typeof(DateTime))
                            {
                                row[j + 1] = Convert.ToDateTime(data[j]);
                            }
                            else
                            {
                                row[j + 1] = data[j];
                            }
                        }
                        row[data.Length + 1] = DateTime.Now.ToString();
                        dt.Rows.Add(row);
                    }
                }
            }
            DataAccess dataAccess = new DataAccess(Constant.CONNECTION_STRING_NAME);
            dataAccess.WriteBulkData(dt, Constant.TABLE);
            reader.Close();
            reader.Dispose();
            File.Delete(path);

1
正如Microgen所说,它可能仍在使用中。过去我曾遇到过这样的问题,需要一点时间才能正确释放文件,尝试在删除之前加入延迟来查看是否是这个原因。 - Iain Ward
4个回答

4

4
我也遇到了这个问题,所以我在服务器上偶然看到了这篇文章。在复制/删除之前和之后,我添加了以下代码行。 删除
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);

复制

File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);

链接: 为什么无法访问路径?


当 OP 在做一些愚蠢的事情时,我发现这是因为我尝试写入的文件访问被拒绝了。这个代码解决了问题。File.SetAttributes(file, FileAttributes.Normal); - Arachnid

2

您要删除的是 File.Delete(path + filename); 而不是 File.Delete(path);


1

你正在打开

reader = new StreamReader(path + fileName);

但是你正在关闭

File.Delete(path);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接