2014-03-07 15 views
1

我想创建一些将报告导出为ex​​cel文件的功能,但是当我尝试删除临时数据时,它不起作用。File.delete不适用于'directorya directoryb'

File.Delete(tempFileName); 

我尝试MessageBox的 '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

在常规的字符串常量,所述\字符是一个转义字符,所以,如果你想包括一个文字反斜杠,你需要逃避它(wi日本身):

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

否则\t将成为一个选项卡,\b退格键和\D给你unrecognised escape sequence错误。

或者,您可以使用原始字符串,以避免所有来自逃逸的复杂性:它没有做转义

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

,它的工作原理与正斜杠/的原因是因为Windows有,对于时间,能够同时处理方式(在API中,虽然不是在命令解释cmd.exe)。

+0

hm ...我看到了...所以这就是为什么它给错误 – Neversaysblack

1

尝试..

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

或者......

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

反斜杠是一个特殊字符。作为记录在这里......

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

随后在 常规字符串文本字符一个反斜杠字符()必须是以下 字符一个字符:”,” \ ,0,A,b,F,N,R,T,U,U,X,v,否则,发生 编译时间错误。

+0

这是工作谢谢...忘了输入'@' – Neversaysblack