Jar и File I / O - PullRequest
       53

Jar и File I / O

1 голос
/ 29 января 2011

в моем проекте Java у меня есть некоторые файлы свойств в папке src / properties.При запуске приложения в Eclipse загрузка и сохранение файла с использованием следующего кода не вызывает проблем:

    // create and load default properties
    Properties defaultProps = new Properties();
    File file = new File("src/properties/defaultProperties");
    if (!file.exists()){
        // Create new properties file
            ...
        FileOutputStream out = new FileOutputStream("defaultProperties");
        defaultProps.store(out, "---No Comment---");
        out.close();
    } else {
        // Load existing properties file
        FileInputStream in = new FileInputStream(file);
        defaultProps.load(in);
        in.close();
    }

Однако при создании файла Runnable Jar с Eclipse свойства загружаются неправильно.То же самое происходит при сохранении файла.Я прочитал кое-что о:

InputStream is = getClass().getResourceAsStream(path);

Но в этом случае, как я могу проверить поток ввода, если файл существует?Как правильно сделать такой ввод-вывод, чтобы он работал в исполняемых файлах Jar?

Ответы [ 4 ]

3 голосов
/ 29 января 2011

Скорее используйте java.util.prefs.Preferences. Он похож на java.util.Properties с той разницей, что он хранится не в файлах свойств, а в управлении конфигурацией конкретной платформы. Например, на компьютерах с Windows это реестр.

Смотри также:

0 голосов
/ 29 января 2011

Из javadocs ClassLoader

getResourceAsStream Возвращает

Входной поток для чтения ресурса или ноль, если ресурс не найден

0 голосов
/ 29 января 2011

Не пытайтесь записывать ресурсы обратно в файлы Jar. Архивы обычно закрыты JVM.

Вместо этого сериализуйте новые параметры в определенном месте в локальной файловой системе (доступно множество вариантов того, как этого добиться) и проверьте этот измененный файл, прежде чем задавать по умолчанию внутренние свойства.

0 голосов
/ 29 января 2011
getClass().getResourceAsStream(path);

- верный путь. Ваш файл свойств должен быть упакован в ваш файл jar, а путь (как указано выше) должен соответствовать пути файла свойств в файле jar.

Обратите внимание, что вы не будете писать в это. Если вы упаковываете банку, то она (во всех отношениях) неизменна.

...