Как создать правильный путь к файлу ресурса в jav-файле java - PullRequest
0 голосов
/ 18 декабря 2018

Сидя здесь с большим java-проектом (для первокурсника), испытывающим трудности с созданием правильного пути к файлам к ресурсам.

У меня сейчас есть файлы в виде .txt, .png,.jpg и .gif.

Прямо сейчас я использую следующие пути, чтобы найти текстовый файл:

File userFile = new File("Source Code/files/users.txt");

Или такие пути, чтобы создать изображение, загруженное в мой код FX:

File logoPath = new File("Source code/files/graphics/Streamy_logo.png");
Image logoImage = new Image(logoPath.toURI().toString());
logo.setImage(logoImage);

Это прекрасно работает в моей IDE (IntelliJ), но не работает, когда я создаю проект в виде файла Jar.Я думаю, что это связано с каталогом «исходного кода», не созданным в jar-файле, что имеет смысл сейчас.

Пытался читать разные темы, но, кажется, немного по-другому, если я должен использовать getResources-метод, установить resourceStream или что-то еще.

Может кто-нибудь, пожалуйста, помогите мне с этим.Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Для проектов maven или gradle, которые соблюдают соглашение о каталогах maven, вы можете просто использовать

getClass().getResource("/your_file_located_in_src_main_resources.extension").getPath()
0 голосов
/ 18 декабря 2018

Вы не можете загружать такие файлы в файлы .jar, вот пример того, как читать BufferedImages.Но сначала убедитесь, что вы пометили папку ресурсов как папку ресурсов в IntelliJ, щелкнув правой кнопкой мыши папку в представлении проекта и перейдя к «Пометить каталог как» и проверив корень ресурса.

    BufferedImage exampleBlock = null;
    try {
        exampleBlock = ImageIO.read(ClassLoader.getSystemResource("exampleBlock.png"));
    } catch (IOException e) {
        e.printStackTrace();
    }

С помощью этого метода получения файлов все ваши файлы будут реализованы в файл .jar, и вы можете использовать их, называя их имя файла + расширение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...