删除本地路径中的所有文件

时间:2016-08-02 16:32:20

标签: c# visual-studio delete-file

除了我的软件之外,我需要删除软件本地路径中的所有文件

我的剧本:

string a = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
Array.ForEach(Directory.GetFiles(a), File.Delete);

错误:

  

“System.UnauthorizedAccessException”类型的未处理异常   发生在mscorlib.dll

     

其他信息:L'accèsauchemin d'accès   'D:\ FWeb \ AutoUpdate \ AutoUpdate \ bin \ Debug \AutoUpdate.exe'estrefusé。

2 个答案:

答案 0 :(得分:2)

您尝试删除正在使用的文件 - 很可能是当前进程的可执行文件。您可以跳过此特定文件,但请注意,如果它加载任何库(.dll文件),它们也可能被锁定。其他文件也可能正在使用中(例如.pdb文件,资源等),因此请确保排除此类内容。

var assemblyPath = Assembly.GetEntryAssembly().Location;
var pathsToExclude = new[] { assemblyPath };
string a = System.IO.Path.GetDirectoryName(assemblyPath);
foreach (var file in Directory.EnumerateFiles(a).Except(pathsToExclude))
    File.Delete(file);

答案 1 :(得分:0)

您只需要过滤掉自己的程序集。当然,您无法删除当前正在运行的二进制文件,因此请将其从列表中删除:

font-weight: bolder

为避免出现区分大小写问题,您可以考虑

string location = Assembly.GetEntryAssembly().Location;
string a = System.IO.Path.GetDirectoryName(location);
string[] files = Directory.GetFiles(a).Where(f => f != location).ToArray();
Array.ForEach(files, File.Delete);

代替。