我正在尝试删除图片目录中的所有图片,除了图片框中加载的最后一张图片,并使用以下代码来实现此功能但仍然获得正在使用的文件
System.IO.DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\Images\\");
foreach (FileInfo file in di.GetFiles())
{
if(file.FullName!=pictureBoxLoadImage.ImageLocation)
file.Delete();
}
答案 0 :(得分:1)
这应该有效,它会从文件中跳过最后一个文件并删除剩余的
System.IO.DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\Images\\");
var files = di.GetFiles();
files.AsParallel().Reverse().Skip(1).ForAll((f) => f.Delete());
答案 1 :(得分:0)
我认为此处ImageLocation
会返回您图片的相对路径,这将使您的if
语句始终返回true
,即使对于最后一张图片也是如此,要解决此问题,您应该转换路径由ImageLocation
返回到绝对路径:
System.IO.DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\Images\\");
foreach (FileInfo file in di.GetFiles())
{
if(file.FullName!= Path.GetFullPath(pictureBoxLoadImage.ImageLocation))
file.Delete();
}