Ошибка с получением пути к файлу.

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
11
Баллы
18
В проекте есть задача отправлять файл через телеграм.
Для этого нужно получить полный путь к файлу.
Я получал через кубик.
С недавних пор начала прилетать ошибка
"Выполнение действия Directory Вторая часть пути не должна быть именем диска или UNC. Имя параметра path2".
Я не понимаю о чем тут речь, в проекте нет переменных path2

В переменной output_filepath задается имя файла 'zakaz.xlsx'
Полный путь, который в результате получаем кубиком - C:\Users\kenty\Desktop\wildberries сбор заказов из аккаунтов\zakaz.xlsx
После получения полного пути, сохраняем в ту же переменную output_filepath

Проблема осложняется тем, что проект работает в многопотоке, первые потоки отрабатывают корректно без ошибок, а потом начинается вот эта ошибка.
Кто нибудь в курсе почему возникает ошибка и как убрать?


93937
 
Последнее редактирование:

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
11
Баллы
18
Кто разбирается, напишите плиз код на C# как получить полный путь к файлу, который лежит внутри папки проекта. Возможно это решит вопрос.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
Ошибка в том, что был у Вас путь, например C:\temp\
Далее в переменной output_filepath содержалось имя фала, например zakaz.xlsx.
Дальше в переменную output_filepath Вы сохранили полный путь C:\temp\zakaz.xlsx
До этого момента все хорошо.
А дальше - произошло примерно такое - Вы ушли куда-то и окольными путями пришли обратно к этому кубику.
И в этот момент в переменной output_filepath уже находилось значение C:\temp\zakaz.xlsx.
В процессе выполнения Вы решили создать путь из C:\temp\ и C:\temp\zakaz.xlsx и сохранить в переменную output_filepath.
Но, второй не может содержать полный путь к диску - из-за чего и происходит ошибка.
Чтобы проверить - перед этим кубиком установите вывод в лог содержимого переменной output_filepath, а также после выполнения кубика.
И когда в следующий раз появится ошибка - Вы увидите что именно пытались сделать.

Сформировать путь к файлу формируется примерно так: return Path.Combine(project.Directory, "file.txt");
93938
 
  • Спасибо
Реакции: braind

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
11
Баллы
18
Ошибка в том, что был у Вас путь, например C:\temp\
Далее в переменной output_filepath содержалось имя фала, например zakaz.xlsx.
Дальше в переменную output_filepath Вы сохранили полный путь C:\temp\zakaz.xlsx
До этого момента все хорошо.
А дальше - произошло примерно такое - Вы ушли куда-то и окольными путями пришли обратно к этому кубику.
И в этот момент в переменной output_filepath уже находилось значение C:\temp\zakaz.xlsx.
В процессе выполнения Вы решили создать путь из C:\temp\ и C:\temp\zakaz.xlsx и сохранить в переменную output_filepath.
Но, второй не может содержать полный путь к диску - из-за чего и происходит ошибка.
Чтобы проверить - перед этим кубиком установите вывод в лог содержимого переменной output_filepath, а также после выполнения кубика.
И когда в следующий раз появится ошибка - Вы увидите что именно пытались сделать.

Сформировать путь к файлу формируется примерно так: return Path.Combine(project.Directory, "file.txt");
Дело в том, что это последние действия в проекте, дальше ничего нет, проект завершается.
И переменная не глобальная, так что не понятно почему в многопотоке вылезает ошибка.
Попробую протестирую использовать разные значения для переменных, а си код тоже попробую, спасибо
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
Дело в том, что это последние действия в проекте, дальше ничего нет, проект завершается.
Значит перед этим кубиком и после этого кубика выведите пожалуйста сообщение с содержанием указанной переменной.
Когда поймаете ошибку в многопотоке - сделайте скриншот и пришлите сюда.
Хотя, думаю и без скриншота Вы сами сможете понять, что путь выглядит явно не так, как должен.

Что касается C# - то он магии какой-то не делает - если на вход Вы будете подавать не корректные данные - то он также будет выдавать ошибку. Нужно подавать корректные данные, чтобы получать корректный результат.

Кстати, ещё посмотрел, что код берет случайный файл.
А если этого случайного файла не будет - то возможно кубик, на который я указал стрелочкой будет также выдавать ошибку - нужно убедиться, что внутри указанной переменной находится путь и что этот файл по указанному пути действительно существует.
93941
 
Последнее редактирование:

braind

Client
Регистрация
10.10.2012
Сообщения
119
Благодарностей
11
Баллы
18

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)