C# 如何删除没有扩展名的文件?

C# 如何删除没有扩展名的文件?,c#,C#,我正在开发一个程序,这个程序可以删除缓存。唯一的问题是缓存中的所有文件都没有扩展名,当我尝试删除这些文件时,总是会出现异常:对路径“path”的访问被拒绝。所以我不知道为什么会发生此错误,因为我试图删除的是文件而不是目录。我认为由于缺少扩展名,它无法将该文件识别为文件。我已对此进行了测试: DirectoryInfo cache = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationD

我正在开发一个程序,这个程序可以删除缓存。唯一的问题是缓存中的所有文件都没有扩展名,当我尝试删除这些文件时,总是会出现异常:
对路径“path”的访问被拒绝。
所以我不知道为什么会发生此错误,因为我试图删除的是文件而不是目录。我认为由于缺少扩展名,它无法将该文件识别为文件。我已对此进行了测试:

DirectoryInfo cache = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Cache");
Console.WriteLine("Deleting Cache...");
foreach (var fi in cache.GetFiles())
{
    File.Delete(cache + @"\" + fi.Name);
    Console.WriteLine(cache + @"\" + fi.Name);
}
Console.ReadKey();

我还可以尝试什么?

您的文件似乎仍处于打开状态,因此无法删除它。然而,我最初的回答仍然适用:

由于您已经有了一个
DirectoryInfo
,因此不需要连接字符串来获取文件名,只需使用
FileInfo.Delete

foreach (var fi in cache.GetFiles())
{
    fi.Delete();
}
无论如何,应避免连接字符串以生成路径,请使用:


显示失败的代码“我认为由于缺少扩展名,他无法将文件识别为文件”-这是胡说八道。文件可以没有扩展名,文件夹也可以有扩展名。很可能是您的代码(您没有共享)有问题,或者由于某种原因,相关文件受到保护,您无法访问它们。
FileInfo
(这是
fi
的类型)声明了一个
.Delete()
方法,因此您可以简单地调用
fi.Delete()虽然我想知道是否是调用
.GetFiles()
引发了异常。你能确认吗?用
fi.Delete()也会出现与丢失路径相同的错误。删除文件是否需要扩展名?我还可以使用什么方法获取目录中的所有文件?您的程序是否将正确的路径输出到控制台?您可以剪切并粘贴该输出,并在命令行中使用它手动删除该文件吗?如果访问被拒绝,您仍然可以访问吗?
DirectoryInfo cache = new DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Cache"));