C# 文件夹的转义存在并用于创建目的
我有以下代码:C# 文件夹的转义存在并用于创建目的,c#,.net,C#,.net,我有以下代码: if (!Directory.Exists(@"C:\" + reader1.GetString(ColIndex1) + @"\" + reader1.GetString(ColIndex2) + @"\" + reader1.GetString(ColIndex3))) { Directory.CreateDirectory(@"C:\" + reader1.GetString(ColIndex1) + @"\" + reader1.GetString(ColInde
if (!Directory.Exists(@"C:\" + reader1.GetString(ColIndex1) + @"\" + reader1.GetString(ColIndex2) + @"\" + reader1.GetString(ColIndex3)))
{
Directory.CreateDirectory(@"C:\" + reader1.GetString(ColIndex1) + @"\" + reader1.GetString(ColIndex2) + @"\" + reader1.GetString(ColIndex3));
}
如何转义这些值,以便它能够正确检查文件夹是否存在,并在需要时创建它们
例如,此时,如果ColIndex2包含包含以下字符的文本:
\/:*?"<>|
\/:*?”|
代码无法正确创建文件夹。您不需要检查子目录是否存在。
目录。CreateDirectory将创建您需要的所有子目录。有关详细信息,请查看文档
在指定路径中创建所有目录和子目录
此外,与使用@“\”
来表示字符串不同,更安全的方法是使用路径。组合。例如:
String yourFullPath = Path.Combine(
@"C:\",
reader1.GetString(ColIndex1),
reader1.GetString(ColIndex2),
reader1.GetString(ColIndex3));
// following will do nothing if yourFullPath already exists
Directory.CreateDirectory(yourFullPath) ;
最后,我用/
字符尝试了这个示例:
System.IO.Directory.CreateDirectory(System.IO.Path.Combine(@"c:\", @"a/b\c")) ;
它正在创建所有文件夹a
,b
和c
编辑
如果要删除NValidCharPath。将帮助您执行此操作:
char [] allInvalidChars = Path.GetInvalidFileNameChars();
string yourPathWithoutInvalidChars = new string(yourFullPath.ToCharArray().Where(c => !allInvalidChars.Contains(c)).ToArray());
谢谢。这大大减少了代码,但似乎无法处理以下所有字符:*?“|
。