2014-03-07 69 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