Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
kovatelj
7 лет назад

Пишу приложение на Java. Часть 3

Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портала Голос!

Это продолжение моих постов о том как я пишу приложение на Java.

Ссылка на 1 часть.

Ссылка на 2 часть.


В этом посте я расскажу как я учился работать с файлами. Надеюсь вы помните, что приложение должно делать запрос к блокчейну 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;
}

 Про основной класс я расскажу в следующий раз. 

Спасибо вам за ваше внимание и не забудьте подписаться на мой блог. Мне очень нужна ваша поддержка!!!!

0
31.139 GOLOS
На Golos с October 2016
Комментарии (4)
Сортировать по:
Сначала старые