Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
reisal78
930 / 676 / 226
Регистрация: 28.04.2013
Сообщений: 1,919
1

Как получить данные из файла .properties

03.06.2015, 11:33. Просмотров 1060. Ответов 10
Метки нет (Все метки)

Всем привет.
У меня есть класс который не наследуется от Activity. (Это класс фабрика)
Как можно открыть в нем InputStream для чтения файла .properties? (Куда положить файлик?)
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2015, 11:33
Ответы с готовыми решениями:

Получить значение из *.properties файла
Здравствуйте, я хочу получить значения из пропертис файла. По заданию физическое чтение файла...

Как сохранить данные из CheckedListBox в Properties.Settings?
Подскажите как правильно в виде List сохранить и потом загрузить Добавлено через 13 часов 3...

.NET: Как лучше - хранить глобальные данные в Application или как static properties класса?
большой Web проект на ASP переводится на .NET. Куча глобальных данных раньше хранилась в...

Как получить данные из файла
Первым элементов файла должно быть кол-во меценатов,а остальная часть состоять из пар строк,в...

Как получить данные из файла *.xls
Друзья, помогите кто может, еще лучше примерчик.

10
YuraAAA
1581 / 1321 / 283
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.06.2015, 11:37 2
reisal78, в папку assets.
Java
1
2
3
4
5
6
7
8
9
10
Resources resources = getResources();
AssetManager assetManager = resources.getAssets();
 
try {
    InputStream inputStream = assetManager.open("config.properties");
    Properties properties = new Properties();
    properties.load(inputStream);
} catch (IOException e) {
    e.printStackTrace();
}
0
reisal78
930 / 676 / 226
Регистрация: 28.04.2013
Сообщений: 1,919
03.06.2015, 11:39  [ТС] 3
YuraAAA,
getResources() я так понимаю, что метод Context a? От чего мне унаследовать мой класс?
0
androbro
355 / 312 / 71
Регистрация: 17.10.2014
Сообщений: 915
03.06.2015, 11:44 4
reisal78, ну так передайте в него контекст при создании
0
03.06.2015, 11:44
reisal78
930 / 676 / 226
Регистрация: 28.04.2013
Сообщений: 1,919
03.06.2015, 11:59  [ТС] 5
Класс выглядит так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class FactoryLinks {
    public static final String TAG = "mc2";
    private static FactoryLinks instance;
    private Map<String, Object> links;
 
    public static synchronized FactoryLinks getInstance() {
        if (instance == null) {
            instance = new FactoryLinks();
        }
        return instance;
    }
 
    private FactoryLinks() {
        links = new HashMap<>();
 
 //       InputStream inputStream = ;
        Properties prop = new Properties();
        try {
 //           prop.load(inputStream);
            Log.i(TAG, "Файл конфигурации загружен");
        } catch (IOException e) {
            Log.e(TAG, "Ошибка загрузки файла конфигурации " + e.getMessage());
            e.printStackTrace();
        }
    }
 
 
    public Object getLink(String key) {
        if (!links.containsKey(key)) {
            throw new IllegalArgumentException("Key " + key + " not found in Factory");
        }
        return links.get(key);
    }
}
Добавлено через 15 минут
Идея у меня такая.
- стартую приложение.
- показываю пользователю стартовую активити.
- инициализирую фабрику
- в фабрике из файла пропертей получаю классы для которых нужно создать объекты.
- в фабрике создаю объекты классов, реализующих нужные мне интерфейсы и помещаю их в мапу.
- в дальнейшем в приложении, "дергаю" эти объекты из фабрики.

androbro, просто в синглтон передавать параметром что то... мне кажется это не лучшая идея =)
0
YuraAAA
1581 / 1321 / 283
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.06.2015, 12:02 6
Лучший ответ Сообщение было отмечено reisal78 как решение

Решение

reisal78,
1. Создайте класс TheApplication.java и унаследуйте его от Application класса
2. Пропишите его как name в тэге <application в файле манифеста.
3. TheApplication сделайте singleton
4. Получите контекст из любого места Вашей программы с помощью TheApplication.getInstance().getApplicationContext()

Добавлено через 1 минуту
Цитата Сообщение от reisal78 Посмотреть сообщение
public static synchronized FactoryLinks getInstance()
Cинхронизация метода не самое лучшее решение. Если у Вас есть шанс одновременного вызова из нескольких потоков, можно использовать что-то типа double check-lock singleton
2
reisal78
930 / 676 / 226
Регистрация: 28.04.2013
Сообщений: 1,919
03.06.2015, 12:36  [ТС] 7
Цитата Сообщение от YuraAAA Посмотреть сообщение
Cинхронизация метода не самое лучшее решение. Если у Вас есть шанс одновременного вызова из нескольких потоков, можно использовать что-то типа double check-lock singleton
Я бы сказал "не самое быстрое решение"...
Спасибо за совет

Добавлено через 19 минут
Цитата Сообщение от YuraAAA Посмотреть сообщение
3. TheApplication сделайте singleton
С приватным конструктором не работает.
Но если я правильно разобрался с жизненным циклом андройд приложений, то объект Application будет создан всего один при старте приложения?
0
YuraAAA
1581 / 1321 / 283
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.06.2015, 13:38 8
reisal78, да, совершенно верно. Забыл упомянуть, это не совсем "классический" синглетон.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class TheApplication extends Application {
    private static TheApplication sApplication;
 
    public static TheApplication getInstance() {
        return sApplication;
    }
 
    @Override
    public void onCreate() {
        super.onCreate();
        sApplication = this;
    }
}
0
androbro
355 / 312 / 71
Регистрация: 17.10.2014
Сообщений: 915
03.06.2015, 13:51 9
YuraAAA, если не составить труда выскажите Ваши соображения по ситуации:
у меня есть ряд так сказать параметров(типа user_id, user_fio итд.) которые нужны в некоторых activity.
я каждый раз дергаю их из sharedPreference.
может быть целесообразней воспользоватся штукой которую Вы привели?и живет такой "синглтон" на протяжении всего ЖЦ приложения?
0
YuraAAA
1581 / 1321 / 283
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.06.2015, 14:22 10
androbro, Да, это вполне нормальный вариант. Вы можете хранить их в инстансе аппликейшена.
Цитата Сообщение от androbro Посмотреть сообщение
и живет такой "синглтон" на протяжении всего ЖЦ приложения?
да
1
androbro
355 / 312 / 71
Регистрация: 17.10.2014
Сообщений: 915
03.06.2015, 14:47 11
YuraAAA, ок, спасибо!
0
03.06.2015, 14:47
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2015, 14:47

Как получить данные с другого файла?
Добрый день Есть сайт там например http:\www.aspRead.net который защищен сертификатом. После того...

Как получить нужные данные из XML файла?
Пример xml: &lt;?xml version=&quot;1.0&quot;?&gt; &lt;Users&gt; &lt;ADMIN&gt; &lt;pass&gt;123321&lt;/pass&gt; ...

Как получить исходные данные из 10-й строки файла?
При написании консольного приложения на visual-studio, возникла проблема, мне надо получить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru