File.delete不适用于'directory \ directory'

时间:2014-03-07 04:59:56

标签: c# delete-file temp

我想创建一些将报告导出到excel文件的功能, 但是当我尝试删除临时数据时,它无法正常工作。

File.Delete(tempFileName);

我尝试将消息框'tempFileName'设为正确

D:\test\bin\Debug\temptemp1.xls

然后我尝试手动删除它

File.Delete("D:\test\bin\Debug\temptemp1.xls");

它会给出错误结果'无法识别的转义序列';
我试着像这样改变它

 File.Delete("D:/test/bin/Debug/temptemp1.xls");

并且工作顺利

我看到文档File.Delete here
并且它使用'\'而不是'/'; 任何人都可以向我解释这个吗? (我使用vs 2010和.net 4 winform)

2 个答案:

答案 0 :(得分:2)

在常规字符串常量中,\字符是转义字符,因此,如果要包含文字反斜杠,则需要将其转义(使用自身):

File.Delete("D:\\test\\bin\\Debug\\temptemp1.xls");

否则\t将成为标签,\b退格,\D会向您显示unrecognised escape sequence错误。

或者,您使用原始字符串来避免因转义而产生的所有复杂性:

File.Delete(@"D:\test\bin\Debug\temptemp1.xls");

不进行转义。

它与正斜杠/一起使用的原因是因为Windows在 long 时间内能够处理这两种样式(在API中,但不在命令中)口译员cmd.exe)。

答案 1 :(得分:1)

尝试..

File.Delete(@"D:\test\bin\Debug\temptemp1.xls");

... OR

File.Delete("D:\\test\\bin\Debug\\temptemp1.xls");

反斜杠是一个特殊字符。如此处所述...

http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

  

在a中跟随反斜杠字符()的字符   regular-string-literal-character必须是以下之一   字符:',“,\,0,a,b,f,n,r,t,u,U,x,v。否则,a   发生编译时错误。