【问题标题】:Delete files into a folder c#将文件删除到文件夹c#
【发布时间】:2020-08-19 00:58:34
【问题描述】:

我有一个问题非常好奇。

我正在将文件删除到文件夹中,这是算法

            System.IO.DirectoryInfo di = new DirectoryInfo(folderPath);

            foreach (FileInfo file in di.GetFiles())
            {
                file.Delete();
            }
            foreach (DirectoryInfo dir in di.GetDirectories())
            {
                dir.Delete(true);
            }

我选择目录,算法删除:文件夹、子文件夹和所有相关的都没有问题。

当我下载一个包含文件夹和子文件夹的压缩文件时会出现问题(需要指出的是,压缩文件中的数据是我实际应该删除的)。

软件报错:拒绝访问

事实是我不明白,那个压缩文件(.zip)特别是那个压缩文件的一些文件夹是不允许我删除的。

算法中是否缺少允许删除的内容?

【问题讨论】:

  • 您的程序是否有适当的权限来更改文件夹?
  • 这是我的疑问,我不知道这是否与权限有关,但令我震惊的是,对于某些文件它可以与其他文件一起使用,但事实并非如此。你能指导我这些权限是什么吗?
  • 哦,对了,事实上,对于可能是这样的怀疑,我授予了读取、写入、修改每个文件夹的完全权限,但它仍然向我抛出错误。我不完全理解的是,当我创建手动文件时,它们会被毫无问题地删除,但是当我解压缩 .zip 文件时,它会在某些文件夹中出现问题。问题是某些文件夹被删除,而其他文件夹则给我错误。

标签: c# vb.net visual-studio visual-studio-2010


【解决方案1】:

首先,要递归删除包含所有文件和子文件夹的文件夹,您只需调用Directory.Delete(folderPath, true)。 如documentation 中所述,如果文件或文件夹受到保护,您可以拥有UnauthorizedAccessException。您可以做的一种解决方案是要求您的应用程序以管理员权限启动,如答案https://stackoverflow.com/a/2818776/10115818

中所述

【讨论】:

  • 你好...我已经添加了管理员权限,我已经添加了清单,我已经按照指示完成了所有操作,应用程序要求我提供管理员凭据,但它告诉我:拒绝访问路由
  • 要尝试的另一件事是使用 file.Attributes = FileAttributes.Normal; 为每个文件/目录设置正常权限在文件删除和 dir.Attributes = FileAttributes.Normal 之前;之前 dir.Delete(true);
  • 你能给我一个地方,我可以看到一个例子来试试吗?
  • 在您的第一个示例中,它看起来像这样 System.IO.DirectoryInfo di = new DirectoryInfo(folderPath); foreach(di.GetFiles() 中的 FileInfo 文件){ file.Attributes = FileAttributes.Normal;文件.删除(); } foreach(di.GetDirectories() 中的 DirectoryInfo 目录){ dir.Attributes = FileAttributes.Normal; dir.Delete(true); }
  • 如果我理解正确,你需要递归地做。这个案例你可以在这里看到gist.github.com/andrew-kulikov/c3555464ed35abe3b9287d85e8a069f9。希望这会有所帮助。
猜你喜欢
  • 2017-01-06
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多