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());

Теперь всё читается корректно, кириллица остаётся в пути в первоначальном виде.

→ Ссылка