Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Вопрос связанный с директорией


Автор: barin_Student 2.11.2007, 09:48
Собственно у меня два вопроса , первый:
Есть файл конфигурации config.props, сейчас лежит там где маин класс. Читаю его при помощи Properties , мне нужно что лежал в папке конфиг. Делаю так:
Код

Properties p = new Properties();
File file = new File(./config/config.props)
System.out.println(file.exists());//выводит true
try
{
    p.load(new FileInputStream(file));
}
String d = p.getProperty("bla bla");// null выводит

Почему так выходит?

2 вопрос:
при компиляции в командной строке , файлы из библиотеки скидываются все вместе в одну папку , если надо будет я приведу команду компиляции. Как сделать так чтоб при компиляции библиотечные файлы писались в папки так как они лежат в библиотеке. использую java 1.6.0 

Автор: Kangaroo 2.11.2007, 11:10
Цитата

Почему так выходит?

Покажи config.props и как ты читаешь проперти, а не "бла бла" smile

Автор: valiantsin 2.11.2007, 11:10
Уважаемый 
barin_Student, в Вашем случае - все правильно - просто Вы невнимательно разобрались с Properties - ключ в Вашем случае - первое bla из выражения "bla bla" - то есть второе bla - это значение. Стоит сделать так:
Код

Properties p = new Properties();
        File file = new File("путь к Вашему файлу пропертиес");
        System.out.println(file.exists());//выводит true
        try
        {
            p.load(new FileInputStream(file));
        }catch (Exception e) {
            e.printStackTrace();
        }
        String d = p.getProperty("bla");// выведет второе bla
        System.out.println(d);
 

Автор: barin_Student 2.11.2007, 11:35
Вот как проперти читаю:
Код

Properties p = new Properties()
File file = new File(/home/student/gate/config.props);
p.load(new FileInputStream(file));//здесь же указываю файл и надо отсюда читать.
String ip  = p.getProperty("ip");//ИЛИ вы имеете ввиду вот так читать p.getPropery(/home/student/gate/config.props/"ip");

Бла бла - это просто то что я хочу скачать , а не откуда . smile 

Автор: valiantsin 2.11.2007, 11:41
если Ваш Проперти файл содержит такую строку:
ip 192.168.10.04, то для того, чтобы Вам вывелось 192.168.10.04 вы должны сделать так:
Код
String ip  = p.getProperty("ip");

Автор: barin_Student 2.11.2007, 11:51
Я так делаю, если я файл ложу где main , то все ok. А если кидаю в отдельную папку , то не читает от туда.

Автор: valiantsin 2.11.2007, 11:55
мой uin в icq 442836006 там обсудим и решение на форум выложим позже

Автор: barin_Student 2.11.2007, 12:01
Я не могу выходить в Аську , в этом тоже проблема. Прокся доступ не выдает. Просто я не могу понять почему file.exists() - выдает true , а читать от туда -не читаю.

Автор: valiantsin 2.11.2007, 12:07
barin_Student,  попробуйте просто напросто написать полный путь к Вашему проперти файлу.
Это будет выглядеть так:
File file = new File("D:\\Projects\\workspace\\YourProject\\JavaSource\\yourPackage\\config.props");

Автор: barin_Student 2.11.2007, 12:15
Я на линуксе , итак указывал полный путь , а есть у вас рускоязычное FAQ по Properties?
 smile 

Автор: valiantsin 2.11.2007, 13:13
barin_Student,  попробуйте через ResourceBundle 
 
Код

ResourceBundle rb;
        Properties p = new Properties();
        String str = " s";
        File file = new File("Путь к Вашему файлу");// хотя я думаю, что именно из-за ошибки в описании пути будет опять чего-то недоставать.
        System.out.println(file.exists());//выводит true
        try {
            rb = new PropertyResourceBundle(new FileInputStream(file));
            str = rb.getString("bla");
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        System.out.println(str);


Автор: barin_Student 2.11.2007, 13:16
пробую

Добавлено через 7 минут и 37 секунд
Неа не выходит , еще раз проверю , если не выйдет в конец поставлю позже этим займусь. Спасибо за старанье.
Да ,а не знаете , почему(так и должно быть), что при компиляции из командной строки(до этого пользовался IDE) все классы из подключаемой библиотеки выкинулись в ту папку , где лежит main класс(к которому собственно и подключали библиотеку). Просто я хотелбы при компиляции оставить такую же структуру по папкам , так же как и лежат эти файлы в библиотеке.

Автор: valiantsin 2.11.2007, 14:55
Попробуйте такой вариант:

Код

ResourceBundle bundle = ResourceBundle.getBundle("test.config");
String bla = (String) bundle.getObject("bla");
System.out.println(bla);
 
где параметр метода "test.config"  это названия пэкеджей и имя файла без расширения;
название Вашего файла должно быть config.properties 
в файле config.properties - должна быть строка bla 192.168.10.04, либо  bla = 192.168.10.04

Автор: valiantsin 2.11.2007, 17:59
По поводу Вашего второго вопроса  barin_Student - хотелось бы посмотреть Ваш build.xml, иначе сложно что-нибудь сказать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)