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

in #programming7 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;
}

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

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

Coin Marketplace

STEEM 0.25
TRX 0.21
JST 0.037
BTC 97965.58
ETH 3486.83
USDT 1.00
SBD 3.48