删除和创建同名c#.NET的新文件/覆盖文件
我正在尝试将图片保存到文件夹中,每小时我都希望保存与旧图片同名的新图片。我尝试过删除旧图片,在调试时,它们会被删除,但当我尝试使用相同的名称创建新版本时,图片会以旧的日期和时间重新出现 这是我的代码:删除和创建同名c#.NET的新文件/覆盖文件,c#,file,asp.net-core,bitmap,file-location,C#,File,Asp.net Core,Bitmap,File Location,我正在尝试将图片保存到文件夹中,每小时我都希望保存与旧图片同名的新图片。我尝试过删除旧图片,在调试时,它们会被删除,但当我尝试使用相同的名称创建新版本时,图片会以旧的日期和时间重新出现 这是我的代码: public void SaveThumbnailsToFolder(List<Thumbnail> thumbnails, Profile p) { foreach (Thumbnail thumbnail in thumbnails)
public void SaveThumbnailsToFolder(List<Thumbnail> thumbnails, Profile p) {
foreach (Thumbnail thumbnail in thumbnails)
{
Bitmap image = new Bitmap(thumbnail.Image);
try
{
string path = Path.Combine(p.ThumbnailDownloadFileLocation, String.Format(thumbnail.Name + ".jpg"));
if (File.Exists(path))
{
File.Delete(path);
}
image.Save(path);
}
catch (Exception ex)
{
log.Error(ex.Message);
}
}
}
public void SaveThumbnailsToFolder(列出缩略图,配置文件p){
foreach(缩略图中的缩略图)
{
位图图像=新位图(缩略图图像);
尝试
{
string path=path.Combine(p.ThumbnailDownloadFileLocation,string.Format(thumbnail.Name+“.jpg”);
if(File.Exists(path))
{
删除(路径);
}
image.Save(路径);
}
捕获(例外情况除外)
{
日志错误(例如消息);
}
}
}
你知道我做错了什么吗?如果文件确实被删除了,但以相同的日期重新出现,那么我猜操作系统会使用图像文件中的元数据设置日期 查看下图,显示Windows上文件的属性对话框,修改日期早于创建日期 但当我尝试创建同名的新版本时,图片 重新显示旧的日期和时间 对于此问题,可以在保存图像后使用,以确保图像创建时间为当前时间
image.Save(path);
File.SetCreationTimeUtc(path, DateTime.UtcNow);
这是我的测试结果:
假设问题是关于文件创建时间戳的,这是Windows的一种古老且有文档记录的行为。从功能的备注中: 如果重命名或删除某个文件,然后不久将其还原,Windows将在缓存中搜索要还原的文件信息。缓存的信息包括其短/长名称对和创建时间
[编辑]陈雷蒙的更多背景: 为什么隧道会存在 当您使用程序编辑现有文件,然后保存它时,您希望保留原始创建时间戳,因为您正在编辑文件,而不是创建新文件。但在内部,许多程序通过组合执行保存、删除和重命名操作(如链接文章中列出的操作)来保存文件,并且在没有隧道的情况下,文件的创建时间似乎会发生变化,即使从最终用户的角度看,没有创建任何文件
这是否意味着:a)日志中没有错误,b)调试时工作正常?确保路径正确。如果文件被删除,则时间会有所不同。我认为该文件实际上没有被删除。基本上,
image.Save()
覆盖该文件。我看不到任何问题。但它没有被覆盖,因为时间仍然是旧时间。没有错误,文件正在从文件上的文件夹中消失。删除,然后在图像保存时返回旧时间
image.Save(path);
File.SetCreationTimeUtc(path, DateTime.UtcNow);