Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портала Голос!
Это продолжение моих постов о том как я пишу приложение на Java.
В этом посте я расскажу как я учился работать с файлами. Надеюсь вы помните, что приложение должно делать запрос к блокчейну 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;
}
Про основной класс я расскажу в следующий раз.
Спасибо вам за ваше внимание и не забудьте подписаться на мой блог. Мне очень нужна ваша поддержка!!!!