Чтение определенных частей текстового файла с использованием класса Scanner в Java

Я ответил на большинство вопросов, связанных с чтением текстового файла с помощью класса Scanner здесь, но я до сих пор не понимаю, как я разбираю следующий текст в разные переменные, а затем заменяю этот текст измененными значениями переменных. Вот текст:

## UserID1.Credentials : 
[Username] = {default}
[Password] = {passwordforadmin}
[AccType] = {Admin.FirstDefault}
[AccessLevel] = {1}
##

Теперь мне нужно разобрать приведенный выше текст на следующие переменные, где:

int UserID = 1;
String Username = "default";
String Password = "passwordforadmin";
String AccType = "Admin";
String AccUnderType = "FirstDefault";
int AccessLevel = 1;

Метод, который я использую для чтения текстового файла:

String content = new Scanner(new File("D:/EncryptedCredentials.txt")).useDelimiter("\\Z").next();

Где content — это строка, которая считывает текстовый файл (D:/EncryptedCredentials.txt), и используется разделитель '\Z'. (Мне нужно загрузить весь текстовый файл в строку, потому что он будет постоянно изменяться программой, а дополнительные сведения должны добавляться автоматически, например, если пользователь вошел в систему в определенное время, скажем, в 11:00, и вошел в систему. вышел в 15:00 и использовал функции A, B и C, то приведенный выше текст следует изменить на:

## UserID1.Credentials : 
[Username] = {default}
[Password] = {passwordforadmin}
[AccType] = {Admin.FirstDefault}
[AccessLevel] = {1}
[LastLogInTime] = {1100}
[LastLogOutTime] = {1500}
[TotalTimeSpent] = {0400}
[FeaturesUsed] = {A,B,C}
##

Как мне выполнить это чтение и запись в текстовый файл? Другой вопрос заключается в том, что, поскольку любой может видеть, что я использую систему входа в систему, мне нужно знать, как можно реализовать шифрование в текстовом файле, чтобы люди могли получить доступ к содержимому текстового файла только через программу. Текст, конечно, можно изменить. Все, что мне нужно, это чтобы программа прочитала его и сохранила конкретную информацию в соответствующих переменных, а затем записала ее обратно в зашифрованный текстовый файл.

Итак, в общем, что мне нужно знать:

Как читать только определенные части текстового файла, загруженного в строку? Как изменить эти части (включая добавление текста, которого раньше не было) и снова записать их в текстовый файл? Как выполнить вышеуказанные шаги при внедрении шифрования в текстовый файл?

Пожалуйста, объясните мне их, потому что я не очень хорошо разбираюсь в этом. Заранее спасибо.

Примечание. Я все еще новичок в Java, и я не знаю ничего, кроме классов Scanner, массивов, циклов и т. д. и некоторых случайных вещей. Пожалуйста, помогите мне.


person user4699641    schedule 21.04.2015    source источник


Ответы (1)


Я предлагаю более простой подход с использованием файла свойств. Вот ссылка на пример: http://www.mkyong.com/java/java-properties-file-examples/

person Karol Król    schedule 21.04.2015
comment
Не могли бы вы объяснить это мне? Заранее спасибо. - person user4699641; 21.04.2015
comment
@ user4699641 Я предлагаю использовать стандартные файлы свойств вместо создания нового пользовательского формата. Вот краткое объяснение, что такое файл свойств: en.wikipedia.org/wiki/.properties . По предыдущей ссылке (mkong.com) показано, как с ним работать с помощью Java. - person Karol Król; 21.04.2015
comment
Но будет ли он зашифрован? - person user4699641; 23.04.2015
comment
Я не думаю, что файл свойств может быть зашифрован, а затем прочитан стандартным механизмом Java, предназначенным для него. Предлагаю шифровать только значения. Если вы хотите сделать его менее читаемым, давайте использовать непонятные имена. - person Karol Król; 23.04.2015
comment
@user4699641 user4699641 может быть, это может быть полезно для вас: jasypt.org/encrypting-configuration.html - person Karol Król; 23.04.2015
comment
большое спасибо за вашу информацию. Это действительно сработало, особенно занятия Jasypt. Спасибо. - person user4699641; 24.04.2015