System.IO.File.Delete()不起作用

时间:2013-05-24 09:18:35

标签: c# asp.net

我的代码就像这样

 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。没有错误被抛出。任何人告诉我哪里出错了?

2 个答案:

答案 0 :(得分:3)

字符串连接

"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

答案 1 :(得分:2)

您的连接路径会导致错误的地址,请使用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而不是绝对路径。