2014-06-27 26 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

相关问题