C# 我能';无法删除图像文件,因为它已被另一个进程使用
我无法删除图像文件,因为在我创建图像文件后,它被另一个进程使用。问题发生在我的进程运行时。如何终止打开该文件的进程,以便其他进程能够访问该文件 我使用以下代码创建图像文件:C# 我能';无法删除图像文件,因为它已被另一个进程使用,c#,asp.net,asp.net-mvc,model-view-controller,asp.net-core-mvc,C#,Asp.net,Asp.net Mvc,Model View Controller,Asp.net Core Mvc,我无法删除图像文件,因为在我创建图像文件后,它被另一个进程使用。问题发生在我的进程运行时。如何终止打开该文件的进程,以便其他进程能够访问该文件 我使用以下代码创建图像文件: string uploads = Path.Combine(Hosting.WebRootPath, "uploads"); string fullPath = Path.Combine(uploads, fileName); entity.file.CopyTo(new FileStream(fullPath, FileM
string uploads = Path.Combine(Hosting.WebRootPath, "uploads");
string fullPath = Path.Combine(uploads, fileName);
entity.file.CopyTo(new FileStream(fullPath, FileMode.Create));FileMode.Create));
文件浏览器无法读取图像文件,java-logo-png-300x300
,直到我停止在VS中运行该项目
你不能这样做。但是您可以等到进程完成后,使用
FileInfo.IsFileLocked()
来验证您的文件是否正在使用
示例代码:
public static void Test(){
FileInfo inf = new FileInfo("your_file");
while (inf.IsFileLocked()) {
Console.WriteLine("File locked, wait...");
};
}
重要提示:请记住每次打开流时都要关闭它们,因为这可能会导致文件锁定。我对问题所在有点困惑,但从外观上看,您从未关闭
文件流。以这种方式打开文件流时,文件的共享模式
设置为无,因此其他进程无法读取/写入/删除该文件。您真正需要做的就是将最后一行更改为:
entity.file.CopyTo(new FileStream(fullPath, FileMode.Create));
到
复制完成后,文件将被释放,以便其他进程能够访问它。如图所示,一个原因可能是您没有将流语句包装到using块中,或者没有手动处理它们。图像是否显示在网页的任何位置?当我添加新的书籍时,图片是如何放置在连接处的/@ChetanRanpariya,这就是have image,我不能在同一次运行中删除书籍,因为图片正在“添加过程”。。。如果我停止并重新运行project,我可以正常删除它。@DourHighArch我的代码中没有错误,我想我必须在添加文件后编写代码来剪切进程。//CopyTo(新的FileStream(fullPath,FileMode.Create));
//Opens the file
using (FileStream stream = new FileStream(fullPath, FileMode.Create))
{
//Copies data from entity.file to stream
entity.file.CopyTo(stream);
}
//File was released (disposed of) thanks to the using statement