检查应删除哪些文件的最快方法

Fastest way to check what file should be deleted

在服务器的响应中,我可以找到服务器上图像的路径。所以我通过路径将它们下载到我的本地文件夹。

由于每次响应都不一样,我不希望本地文件夹中有未使用的图像,所以我想删除它们。

但是什么方式最快呢?

或者,还有其他选择?

谢谢


UPD

我有模型ImageDTO

public class ImageDTO
    {
        public int Id{ get; set; }
        public string FileLocation { get; set; }
    }

以及将图像保存到本地文件夹的方法

private static void SaveImageByUrl(string relativeUrl)
        {
            if (!string.IsNullOrWhiteSpace(relativeUrl))
            {
                var localFilePath = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + relativeUrl).LocalPath;
                if (!Directory.Exists(Path.GetDirectoryName(localFilePath)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(localFilePath));
                }
                if (!File.Exists(localFilePath))
                {
                    var remoteFilePath = ConfigurationManager.AppSettings["SiteUri"] + relativeUrl;
                    using (var client = new WebClient())
                    {
                        client.DownloadFileAsync(new Uri(remoteFilePath), localFilePath);
                    }
                }
            }
        }

属性 FileLocation 包含图像的相对路径。

我从服务器收到 Json 格式的响应。我将它反序列化为对象集合,清除本地数据库并将它们保存到本地数据库中(我也有 ProductDTO,其中包含 List<ImageDTO>。所以我确实收到了 List<ProductDTO> 的响应)。当我这样做时,我将图像异步保存到本地文件夹。

因此,当我从数据库中清除数据时,最好从本地文件夹中清除所有图像,或者检查我是否有不是来自响应的图像并将其删除?

只下载你需要的图片,删除一次你不需要的。 这将比下载所有图像更快,当然如果图像往往相同并且您正在处理大量图像。

您还可以通过仅删除 x 次未使用的图像来增强您的代码

我假设您的响应是源图像路径列表,然后您要使用一些构建本地路径的逻辑来创建本地副本?

如果是这种情况,请反转逻辑,以便您可以确定原始路径应该来自本地。

然后遍历本地图像并找出源图像。如果该内容不在响应中,请删除该文件。

因此,如果您的逻辑是获取文件名和扩展名但位于不同的目录中,则可以将其反转。

然后继续下载新的和更新的图像。你决定你的源图像是否会改变——如果他们不改变,那么就下载新的。否则你也需要更新图像。这取决于你想要什么。您可以假设超过 x 天的图像应该被替换或计算文件字节数以查看它们是否不同。