Лучший способ обработки файлов ресурсов в Java, чтобы они работали в Eclipse и когда они упакованы в jar? - PullRequest
2 голосов
/ 02 апреля 2012

Ищете лучшие практики здесь.Мое приложение требует несколько текстовых файлов.Я должен использовать следующую структуру каталогов:

proj/src/main/java/com/foo/MyClass.java
proj/src/main/rsrc/File1.txt

Я хочу иметь возможность запускать приложение в Eclipse и из командной строки (maven-packaged в jar), и оно должно работать в Windows и Linux.

  1. Что мне нужно сделать с точки зрения конфигурации проекта?
  2. Как получить доступ к файлу ресурса в коде?

Cheers

РЕДАКТИРОВАТЬ: незначительные изменения - структура каталогов приведена в исполнение сверху.

Ответы [ 4 ]

2 голосов
/ 03 апреля 2012

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

Thread.currentThread().getContextClassLoader().getResourceAsStream("File1.txt");

1 голос
/ 03 апреля 2012

Я бы порекомендовал использовать Apache Maven .Этот инструмент может автоматически испортить ваш проект и включить ваши ресурсы.У них есть краткое руководство по Maven за 5 минут .Тогда все, что вам нужно сделать, это поместить свои ресурсы в src.main.resources, и он должен автоматически включиться в jar (см. Руководство по началу работы ) для получения более подробной информации.

Надеюсь, это поможет!

Обновление

Что касается получения ресурса отсюда, вы пробовали getResourceAsStream() из файла Java?

0 голосов
/ 02 апреля 2012

Если * .txt файлы не включены в ваш пакет, возможно, вам нужно добавьте несколько правил в ваш pom.xml, например

<build>
    <resources>
        <resource>
            <directory>src/main/rsrc</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*.txt</include>
            </includes>
        </resource>
    </resources>
</build>
0 голосов
/ 02 апреля 2012
  1. Вам не нужно никаких специальных настроек проекта. Создание выделенной папки для вашего текстового файла под src. Я думаю, что это не так хорошо, как src - папка с исходными кодами. Лично я считаю, что помещать файлы src без исходного кода не рекомендуется.
  2. Я создам новый каталог, например, DocDir, родственный src. В вашем java-коде под src вы можете получить доступ к файлу:

    Файл файл = новый файл ("../../ DocDir / File1.txt");

положить все ../, что вам нужно для доступа к каталогу DocDir.

...