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

in programming •  7 years ago  (edited)

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

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

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

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


В этом посте я расскажу как я учился работать с файлами. Надеюсь вы помните, что приложение должно делать запрос к блокчейну PostCoin, получать ответ и выводить пользователю нужную информацию. Для запроса пользователь должен указать, информация о каком кошельке его интересует. Так я пока что пишу черновик, функцию ввода пользователем адреса кошелька я опустил. Хранить его я предполагаю в текстовом файле в виде пары ключ - значение. Примерно вот так

wallet  PHqpagMomUsJj55DU3x55D5QeVKZ3trPNH

Для работы с файлами был создан класс fileOperations. В нем производится чтение - запись информации в файл. После чтения информация хранится в Map<le/em>. Долго ломал голову почему после запроса Map listFile оказывался у меня пустым. Оказалось что нужно было его сделать статичным :)

listFile

static Map</code>

> 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;
}

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

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!