Java не находит файл из-за кириллицы в пути
Пытаюсь динамически получить путь к файлу mail.properties при помощи конструкции:
this.mailPropsReader = new FileInputStream(MailSender.class.getResource("/mail.properties").getFile());
В ходе выполнения программы возникает ошибка следующего содержания:
a.io.FileNotFoundException: C:\Users\%d0%95%d0%b2%d0%b3%d0%b5%d0%bd%d0%b8%d0%b9\IdeaProjects\Mail_Sender\target\classes\mail.properties (Системе не удается найти указанный путь)
А вся соль собственно в том, что у меня имя пользователя Евгений кириллицей. Если заменить %d0%95%d0%b2%d0%b3%d0%b5%d0%bd%d0%b8%d0%b9 на Евгений, то проводник прекрасно находит нужный файл. Я так понимаю, проблема в кодировке. Переименовывать пользователя не очень хочется (к тому же я уверен, что есть способы решить это проблему).
Как сделать так, чтобы корректно указывалась кириллица в пути к файлу?
Ответы (1 шт):
Автор решения: Zhenyria
→ Ссылка
Я смог решить проблему изменив
this.mailPropsReader = new FileInputStream(MailSender.class.getResource("/mail.properties").getFile());
на
Path pathToRes = Paths.get(MailSender.class.getResource("/mail.properties").toURI());
this.mailPropsReader = new FileInputStream(pathToRes.toFile());
Теперь всё читается корректно, кириллица остаётся в пути в первоначальном виде.