File.ReadAllLines добавляет исполняемый путь к указанному пути - PullRequest
1 голос
/ 22 апреля 2020

Я столкнулся с очень странной ошибкой. Даже странно, что мне это кажется ошибкой, но что я знаю.

Я использую метод File.ReadAllLines (path) в своем коде, например так:

  string[] lines = File.ReadAllLines(path);

Пока все просто. Путь, который я прочитал, находится на моем C диске, поэтому он имеет следующий формат: C: \ Folder \ Folder \ File.txt

Установка прерывания точка на приведенной выше строке и наведение на переменную пути показывает правильный путь

Вот где это становится странным. Если я на самом деле запускаю этот код, я получаю IOException, который сообщает мне о неверном пути. Путь, который он показывает, похоже, путь моего исполняемого файла приложения + путь, который я передал методу.

'C: \ Users \ kingv \ Projects \ C # \ AUDS \ Bsp2 \ bin \ Debug \ netcoreapp3.1 \ C: \ Users \ kingv \ Projects \ C # \ AUDS \ data \ asc1k.txt

Эта ошибка также возникает при использовании метода File.ReadAllText.

Что более странно, так это то, что это проблема, связанная с проектом c. У меня есть два проекта в этом решении. За исключением очень немногих различий, они имеют точно такой же код, и код, относящийся к моей проблеме, точно такой же (объявление и чтение пути)

У меня никогда не было проблем с методом File.ReadAllLines перед. Кто-нибудь знает, что здесь происходит?

1 Ответ

1 голос
/ 22 апреля 2020

Воспроизводил вашу проблему, но только смог сделать это, скопировав путь, записанный в сообщении об ошибке в вашем вопросе.

Ваш путь имеет недопустимый символ в начале, поэтому он не считается Абсолютный путь с корнем вместо этого рассматривается как относительный путь.

Вам необходимо изменить источник пути или, если он является литералом, просто удалите "C:\ часть и запишите ее снова.

Вы можете увидеть это следующим образом:

Encoding.UTF8.GetString(path)

Насколько я понимаю, это Unicode # 8234, который выглядит примерно так:

enter image description here

Это также можно увидеть при проверке содержимого элемента с помощью инструментов разработчика chrome:

enter image description here

...