2014-06-27 23 views
0

我有一個winforms應用程序。在此應用程序中,我將文本文件導出到本地計算機,路徑從數據庫中傳出「C:\ MYFILES」。如何導出和保存文件從數據庫中獲取名稱並在其名稱中包含「/」c#

現在我的問題是,我正在導出這樣的文件,其名稱如"ABC/DEF/Testing"之間有一個「/」(正斜槓) 。所以當我 導出這個文件到我的本地機器時,它給出 錯誤,如"C:\\MyFiles\\ABC/DEF/Testing.text"不存在或者檢查指定的路徑是否存在 。

我被困在這個問題。任何幫助將不勝感激。提前感謝。

+1

文件名不能有正斜槓在其中 - 與像下劃線另一個字符替換它們('_') –

+0

你想要一個名爲'ABC/DEF/Testing.text'文件或文件名爲'ABC \ DEF'目錄中的'Testing.txt'? –

+0

「/」是目錄分隔符(可在.NET,Java等中使用,但不能在cmd.exe和許多其他上下文中使用)。它永遠不會出現在文件名中。 –

回答

1

/不處理文件名。嘗試用\替換它們與

String yournivalidPath = "C:\\MyFiles\\ABC/DEF/Testing.text" ; 
String validPath = yournivalidPath.Replace("/", "\\") ; 
2

你不能。文件名中不能有正斜槓。

fileName = fileName.Replace("/","_"); 

或者替換所有無效字符:

string invalidChars = new string(Path.GetInvalidFileNameChars()); 

foreach (char c in invalidChars) 
{ 
    fileName = fileName.Replace(c.ToString(), ""); 
} 

MSDN

使用任何字符在當前與像下劃線另一個角色(_)更換他們代碼頁的名稱,包括 Unicode字符和擴展字符集中的字符 (128-255),除了以下:

  • 以下保留字符:
 < (less than) 
    > (greater than) 
    : (colon) 
    " (double quote) 
    /(forward slash) 
    \ (backslash) 
    | (vertical bar or pipe) 
    ? (question mark) 
    * (asterisk) 
  • 整數值爲零,有時被稱爲ASCII NUL字符。
  • 其整數表示範圍爲1到31的字符,但允許使用這些字符的備用數據流除外。有關文件流的更多信息,請參閱文件流。
  • 目標文件系統不允許的任何其他字符。
+0

同樣來自[MSDN](http://msdn.microsoft.com/zh-cn/library/system.io.path.getinvalidfilenamechars(v = vs.110).aspx):「從此方法返回的數組不是保證包含文件和目錄名稱中無效的完整字符集。「 – MarkO

相關問題