
Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портала Голос!
Это продолжение моих постов о том как я пишу приложение на Java.
В этом посте я расскажу как я учился работать с файлами. Надеюсь вы помните, что приложение должно делать запрос к блокчейну PostCoin, получать ответ и выводить пользователю нужную информацию. Для запроса пользователь должен указать, информация о каком кошельке его интересует. Так я пока что пишу черновик, функцию ввода пользователем адреса кошелька я опустил. Хранить его я предполагаю в текстовом файле в виде пары ключ - значение. Примерно вот так
wallet  PHqpagMomUsJj55DU3x55D5QeVKZ3trPNHДля работы с файлами был создан класс fileOperations. В нем производится чтение - запись информации в файл. После чтения информация хранится в Map<String, String> listFile. Долго ломал голову почему после запроса Map listFile оказывался у меня пустым. Оказалось что нужно было его сделать статичным :)
static Map<String, String> listFile = new HashMap<>(); Также попробовал пару разных способов работы с файлами. Сначала для форматирования данных для записи использовал класс Formatter, результатом этого стал код
public void WriteFile(String fileName, String key, String value){
    try {
        Formatter nameWriteFile = new            Formatter("/home/sazonov/java/project/postcoin/" + fileName);
        System.out.println("Ok");
        nameWriteFile.format("%s\t%s", key, value);
        nameWriteFile.close();
    } catch (Exception e) {
        System.out.println("No Ok");
    }
}Но как потом выяснилось, что в этом случае не очень удобно дописывать данные в файл :) Ну или я не до конца разобрался. После раздумий появился на свет метод WriteFile в таком вот виде
public void WriteFile(String fileName, String key, String value) {
    try {
        File file = new File("/home/sazonov/java/project/postcoin/" + fileName);
        if (file.exists()) {
            ReadFile(fileName);
            if (listFile.containsKey(key)) {
                System.out.println("Такой параметр уже существует!");
                listFile.clear();
            }
        } else {
            nameWriteFile = new FileWriter(file, true);
            nameWriteFile.append("\n");
            nameWriteFile.write(key);
            nameWriteFile.append("\t");
            nameWriteFile.write(value);
            nameWriteFile.flush();
        }
    } catch (IOException ex) {
        System.out.println(ex.getMessage());
    }
}На вход метода подаем Имя файла, Ключ, Значение. Проверяем есть ли такая информация в файле, если есть то выводим сообщение об этом. Для чтения из файла используется метод ReadFile
public void ReadFile(String fileName) {
    try {
        nameReadFile = new Scanner(new File("/home/sazonov/java/project/postcoin/" + fileName));
        //System.out.println(nameReadFile);
        while (nameReadFile.hasNext()) {
            String name = nameReadFile.next();
            String value = nameReadFile.next();
            //System.out.println(name + "  " + value);
            listFile.put(name, value);
        }
        nameReadFile.close();
    } catch (Exception e) {
        System.out.println("No file!!!");
    }
}Как я уже писал выше, информация после чтения заносится в Map listfile. Из которой мы можем ее запросить в основном классе приложения. для этого имеется метод getMap.
public Map getMap() {
    return listFile;
}Про основной класс я расскажу в следующий раз.
Спасибо вам за ваше внимание и не забудьте подписаться на мой блог. Мне очень нужна ваша поддержка!!!!







@kovatelj, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории:
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
ekaterinka, ianboil, kot, vasilisapor2, semasping, bobrik, myhardmoney, tishkaka
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
@kovatelj Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп@kovatelj Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп