Я использую вышеуказанный метод и получаю исключение выше.
Я не вижу никаких незаконных символов в имени каталога (есть другие каталоги, которые возвращают результаты, как ожидалось).
Когда я вызываю статический Directory.GetFiles(String, String, SearchOption)
с тем же каталогом, который сбой по методу DirectoryInfo
, проблем нет, и метод возвращается, как ожидалось.
Любая идея, что может вызвать это неправильное поведение?Исходный код DirectoryInfo.GetFiles (String, SearchOption): System.ArgumentException: Недопустимые символы в пути
ответ
Я столкнулся с этой проблемой при сканировании каталога на Mac (через общий сетевой ресурс).
DirectoryInfo.GetFiles (@ "// Macbook/общая_папка")
Apperenately это вполне легально на макинтош, чтобы иметь символы как <,> ,? в имени файла, но на окнах это не так.
Когда у одного из имен файлов в каталоге были недопустимые символы, я получил эту ошибку «незаконные символы».
Я думаю, что это и причина моего исключения. Я закончил использование блока try-catch в цикле foreach, который повторяет результаты Directory.GetFiles (String, String, SearchOption) ... не очень эффективен. – eyal
Вам не нужно пропускать этот каталог. Когда вы повторяете пути к файлам, возвращаемым из Directory.GetFiles, вы создаете каждый FileInfo в try-catch, и таким образом вы пропускаете только файлы, которые нарушают имя файла стиля окна. – eyal
, как указано в msdn, ArgumentException
возникает, когда
searchPattern содержит один или несколько недопустимых символов, определенных методом GetInvalidPathChars.
(searchPattern
- первый аргумент String метода).
, чтобы проверить это, вы можете попробовать
var invalidChars = <yourSearchPattern>.Select(x => x).Intersect(Path.GetInvalidPathChars()).ToList();
если вы нашли что-то в invalidChars, вы нашли источник вашей проблемы.
EDIT
Почему это работает с Directory.GetFiles()? Должен признаться, я не понимаю.
ArgumentException
поднимается
, если первый аргумент (path
) имеет недействительные символы (или IsNullOrWhiteSpace
) или
, если второй аргумент (searchPattern
)
не содержит действительный модель
И вот, действительный шаблон
Параметр не может заканчиваться в двух периодах («..„) или содержат два периода (“..») с последующим DirectorySeparatorChar или AltDirectorySeparatorChar, и не может содержать любой из символов в InvalidPathChars.
Как InvalidPathChars
(устаревшее) дают мне тот же результат, как GetInvalidPathChars()
, по крайней мере, в .net 4.5, я должен признать, что я застрял.
Вы можете использовать другую версию .net, где есть разница между двумя?
- 1. Исходный код имеет недопустимые символы
- 2. System.ArgumentException незаконные символы в пути
- 3. Недопустимые символы в пути
- 4. C# недопустимые символы в пути
- 5. Недопустимые символы в пути при сохранении файла
- 6. System.ArgumentException: Незаконные символы в пути. ошибка
- 7. C# - Недопустимые символы в пути
- 8. ResolveUrl Недопустимые символы в пути
- 9. MVC Url Request - Недопустимые символы в пути
- 10. WebClient DownloadFile Недопустимые символы в пути
- 11. Ошибка 500: недопустимые символы в пути
- 12. Невозможно найти недопустимые символы в пути
- 13. Dataset.ReadXML возвращает недопустимые символы в пути. Зачем?
- 14. npm - не установлен; недопустимые символы в пути
- 15. Youtube Downloader: недопустимые символы в пути
- 16. OSX Yosemite - недопустимые символы в пути
- 17. Сведения об исключении: System.ArgumentException: Незаконные символы в пути. ASP.NET MVC
- 18. Прочитать исходный код сайта: символы
- 19. Недопустимые символы в пути во время сжатия в C#
- 20. User Agent вызывает MVC DisplayFor ArgumentException: Недопустимые символы в пути
- 21. Недопустимые символы в пути при разборе строки xml
- 22. Извлечение XSLT-кода как строки - «Недопустимые символы в пути»
- 23. Недопустимые символы в xml C#
- 24. недопустимые символы Merged ResourceDictionary
- 25. System.IO.File.Delete недопустимые символы
- 26. Как удалить недопустимые символы в пути к файлу Использование java?
- 27. XML разбора в XAML/WinRT: недопустимые символы в пути
- 28. DirectoryInfo.GetFiles медленный при использовании SearchOption.AllDirectories
- 29. Недопустимые символы в xml
- 30. Недопустимые символы в Screen.PrimaryScreen.DeviceName
Можете ли вы разместить код, пожалуйста? – shahkalpesh
Это может показаться наиболее очевидным в мире, но * что такое строка, в которой вы проходите? * –