Этот урок посвящен созданию простого текстового редактора, демонстрирующего сохранение и загрузку данных из файла.
Разработка интерфейса
Расширим предыдущую программу, добавив элементы интерфейса. Удалим ненужное изображение и добавим:
- Два поля для ввода текста (EditText): одно для имени (username_field), другое для биографии (user_bio_field).
- Две кнопки: «Сохранить» и «Загрузить».
Разместим эти элементы внутри LinearLayout с id mainbox. Параметры элементов:
username_field (Имя):
- id: username_field
- layout_width: match_parent
- layout_height: (без изменений)
- android:hint: «Введите имя»
- layout_margin: 20dp (верхний отступ)
user_bio_field (Биография):
- id: user_bio_field
- layout_width: match_parent
- layout_height: 45dp
- android:hint: «Биография»
- Расположение: под username_field
Кнопки:
- «Сохранить»: layout_below: user_bio_field; layout_marginStart: 50px (левый отступ)
- «Загрузить»: Копия кнопки «Сохранить», текст изменен на «Загрузить»; layout_marginEnd: 50px (правый отступ); layout_alignParentEnd: true (прижата к правому краю)
Добавим общий верхний отступ для элементов внутри mainbox: layout_marginTop: 20dp.
Реализация функциональности
Создадим методы saveData(View view) и getData(View view) для сохранения и загрузки данных, привяжем их к соответствующим кнопкам.
Java код:
EditText userNameField;
EditText userBioField;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
userNameField = findViewById(R.id.username_field);
userBioField = findViewById(R.id.user_bio_field);
// ...
}
public void saveData(View view) {
String userName = userNameField.getText().toString();
String userBio = userBioField.getText().toString();
try {
FileOutputStream fileOutput = openFileOutput("user_data.txt", MODE_PRIVATE);
fileOutput.write((userName + ". " + userBio).getBytes());
fileOutput.close();
Toast.makeText(this, "Текст сохранен", Toast.LENGTH_SHORT).show();
userNameField.setText("");
userBioField.setText("");
} catch (Exception e) {
Toast.makeText(this, "Ошибка сохранения файла", Toast.LENGTH_SHORT).show();
}
}
public void getData(View view) {
try {
FileInputStream fileInput = openFileInput("user_data.txt");
InputStreamReader reader = new InputStreamReader(fileInput);
BufferedReader bufferReader = new BufferedReader(reader);
StringBuilder result = new StringBuilder();
String line;
while ((line = bufferReader.readLine()) != null) {
result.append(line).append("\n");
}
bufferReader.close();
reader.close();
fileInput.close();
Toast.makeText(this, result.toString(), Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(this, "Ошибка загрузки файла", Toast.LENGTH_SHORT).show();
}
}
Тестирование
Запустите приложение, введите данные, сохраните и загрузите их. Данные хранятся в файле приложения и доступны после закрытия приложения. Этот простой текстовый редактор демонстрирует базовые операции работы с файлами в Android.