System.IO.File.Delete()不起作用
本文关键字:不起作用 Delete IO File System | 更新日期: 2023-09-27 18:15:14
代码是这样的
public static void Deleter()
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + "name" + ".pdf");
HttpContext.Current.Response.TransmitFile("~/media/pdf/" + "name" + ".pdf");
if (FileExists("/media/pdf/" + "name" + ".pdf"))
{
System.IO.File.Delete("D:/Projects/09-05-2013/httpdocs/media/pdf" + "name" + ".pdf");
}
HttpContext.Current.Response.End();
}
在执行这整个代码之后,我仍然可以在文件夹中看到name.pdf。不会抛出错误。谁能告诉我出了什么问题?
字符串拼接
"D:/Projects/09-05-2013/httpdocs/media/pdf" + "name" + ".pdf"
收益率D:/Projects/09-05-2013/httpdocs/media/pdfname.pdf
是要删除的文件,与
不同D:/Projects/09-05-2013/httpdocs/media/pdf/name.pdf
您的连接路径将导致错误的地址,使用Path.Combine
将两个路径合并。当前为:
D:/Projects/09-05-2013/httpdocs/media/pdfname.pdf
^^^^^^
//Missing slash.
改为:
System.IO.File.Delete(Path.Combine("D:/Projects/09-05-2013/httpdocs/media/pdf"
, "name"+ ".pdf"));
或者如果您想使用字符串连接,那么在第一个字符串的末尾添加一个正斜杠,如:
System.IO.File.Delete("D:/Projects/09-05-2013/httpdocs/media/pdf/" + "name" + ".pdf");
还可以考虑使用Server.MapPath
代替绝对路径。