2016-09-05 1 views
1

у меня есть путь к файлу следующим образом:Как читать путь к файлу, где папка имеет квадратные скобки в имени

C:\Recordings\Public\20160901\[MYPC] 

Я не могу изменить формат папки

Я пытающиеся читать содержимое папки, используя следующий код:

foreach (string file in Directory.EnumerateFiles(args[0], "*.*")) 
{ 
    string contents = File.ReadAllText(file); 
    Console.WriteLine(contents); 
} 

Я ПОЛУЧАТЬ следующее сообщение об ошибке:

Unhandled Exception: System.NotSupportedException: The given path's format is not supported. 

Я знаю this post, так как раньше использовал этот метод с powershell и имел отличные результаты, он, похоже, не работает с C#. Я устанавливаю путь чтения через CMD line args [0] (консольное приложение)

Любые идеи/указатели будут наиболее желанными.

UPDATE

я называл мое приложение с нижеследующим, который дал мне ошибку:

myapp.exe "c:\My Recordings\Public\20160905\[CDPC]\" 

Следующая не сделал:

myapp.exe "c:\My Recordings\Public\20160905\[CDPC]" 
+0

Безобразным обходным путем является префиксом каждого экземпляра плохих символов с «\\» (это только один персонаж, бежало) –

+0

Не могу реплицируйте свою проблему: он работает для меня. Вам не нужен какой-либо специальный трюк, просто введите путь в качестве аргумента в командной строке –

+0

хм ... разве это не аргументы [1]? args [0] обычно содержит имя исполняемого файла – Pikoh

ответ

1

Просто удалить оберточной кавычки, если они присутствуют

foreach (string file in Directory.EnumerateFiles(args[0].Replace("\"",""), "*.*")) 
      { 
       string contents = File.ReadAllText(file); 
       Console.WriteLine(contents); 
      } 

Это также можно сделать (точнее) с регулярным выражением

Regex.Replace(args[0], "(^\")|(\"$)", "") //instead of args[0].Replace("\"","") 
Смежные вопросы