2011-06-28 52 views
2

我在C#中使用Directory.GetFiles。這段代碼被轉換成一個程序集,然後用在T-SQL腳本中。下面是代碼行,我認爲這是問題:SQL Server程序集中的非法字符問題

C#代碼:

string[] filePaths = Directory.GetFiles(path, ext, SearchOption.AllDirectories); 

錯誤(T-SQL腳本):

System.IO.DirectoryNotFoundException:無法找到'G:\ Photography \ Archive \ SPBKF3〜L'路徑的一部分。

我假設代字號不是用於Windows中的文件夾名稱的合法字符,因爲導致此錯誤的唯一文件夾是帶有代字號的文件夾。這些文件正在Mac和Windows系統之間共享,我發現文件和文件夾名稱在過去一直是個問題。

我很難理解爲什麼Directory.GetFiles方法甚至會找到一個不存在的目錄。該文件夾顯示在Windows資源管理器中,但我無法訪問該文件夾。

有什麼我可以做,以避免這些問題的文件夾?

回答

2

~不是無效字符 - 我只是試着創建一個名稱爲SPBKF3~L的目錄,而且我還寫了一個快速的C#應用​​程序來運行該目錄上的示例代碼,並且它工作正常。

這裏一定有其他的事情發生 - 你絕對確定該目錄存在嗎? (嘗試將路徑複製並粘貼到資源管理器窗口中)

+0

非常感謝Kragen。我導航到Windows資源管理器中的父目錄,並將其顯示爲存在。但是,當我嘗試訪問該文件夾時,Windows告訴我它不在那裏。如果我複製並粘貼路徑,或者只是通過雙擊該文件夾打開,則會發生此問題。 – BDawg

2

檢查G:\Photography\Archive\SPBKF3~L上的權限並確保用戶帳戶在運行SQL Server實例的情況下可以看到該文件夾​​。

3

SPBKF3〜L看起來很像8.3縮短的文件名。你確定這沒有發生?

+0

你知道這種方式可能實際顯示在Windows資源管理器中嗎?我只在命令提示符下看到過這種情況。 – BDawg

+1

它可能是一個mac創建或刪除目錄中剩下的目錄工件。你可以嘗試的一件事是使用fsutil關閉父文件夾的8.3支持。 – Moose