Как прочитать файл свойств в java из-за пределов папки Class?

У меня есть следующая структура пути к основному классу:

D:/java/myapp/src/manClass.java

и я хочу поместить файл свойств в

D:/java/myapp/config.properties

, который будет содержать имя файла и некоторые другие конфигурации. Я установлю имя файла в файле свойств следующим образом: file=file_to_read.txt

этот file_to_read.txtбудет расположен в D:/java/myapp/folder_of_file/

Основной класс сначала прочитает имя файла из файла свойств, а затем получит содержимое из файла.

Я могу сделать это, если оба config.propertiesи file_to_read.txtнаходятся в src/с mainClass.java. Но не удалось добиться того, как я хочу это сделать.

Кто-нибудь может помочь мне с этим? Мне нужно ваше предложение о том, что я могу сделать, если я хочу поместить папку myappв любое место на моем диске с той же внутренней структурой, которую я описал выше, и программа выполнит эту работу правильно.

Мне также нужно ваше предложение, что если я хочу выполнять работу из jar-файла, созданного после сборки проекта, то могу ли я сделать это без каких-либо проблем?

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

        URL location = myClass.class.getProtectionDomain().getCodeSource().getLocation();

        String filePath = location.getPath().substring(1,location.getPath().length());

        InputStream in = myClass.class.getResourceAsStream(filePath + "config.properties");
        prop.load(in);

        in.close();

        System.out.println(prop.getProperty("file"));

Но это дает ошибку при попытке получить свойство из файла свойств.Спасибо!

21
задан flyleaf 28 June 2012 в 19:13
поделиться