Загрузка данных


package com.example.myapplication;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class MainActivity extends AppCompatActivity {

    EditText vvod, fail;
    TextView text1;
    RadioGroup radioGroup, modeGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        vvod = findViewById(R.id.vvod_txt);
        fail = findViewById(R.id.fail);
        text1 = findViewById(R.id.text1);
        radioGroup = findViewById(R.id.radioGroup);
        modeGroup = findViewById(R.id.modeGroup);
    }

    // Файл во внешнем хранилище (папка приложения)
    private File getExternalFile() {
        String FILE_NAME = fail.getText().toString();
        return new File(getExternalFilesDir(null), FILE_NAME);
    }

    // ---------- СОХРАНИТЬ ----------
    public void save_text(View view) {
        String FILE_NAME = fail.getText().toString();
        String text = vvod.getText().toString();
        boolean append = modeGroup.getCheckedRadioButtonId() == R.id.mode_append;

        int selectedId = radioGroup.getCheckedRadioButtonId();
        if (selectedId == R.id.vnut) {
            // внутренняя память: MODE_PRIVATE - перезаписать, MODE_APPEND - дозаписать
            int mode = append ? MODE_APPEND : MODE_PRIVATE;
            try (FileOutputStream fos = openFileOutput(FILE_NAME, mode)) {
                fos.write(text.getBytes(StandardCharsets.UTF_8));
                Toast.makeText(this, "Файл сохранен во внутреннее хранилище!",
                        Toast.LENGTH_SHORT).show();
            } catch (IOException ex) {
                Toast.makeText(this, "Ошибка: " + ex.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
        } else if (selectedId == R.id.vneh) {
            // внешняя память: второй параметр true - дозапись
            File file = getExternalFile();
            try (FileOutputStream fos = new FileOutputStream(file, append)) {
                fos.write(text.getBytes(StandardCharsets.UTF_8));
                Toast.makeText(this, "Файл сохранен во внешнее хранилище! "
                        + file.getAbsolutePath(), Toast.LENGTH_SHORT).show();
            } catch (IOException ex) {
                Toast.makeText(this, "Ошибка сохранения: " + ex.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(this, "Ничего не выбрано ", Toast.LENGTH_SHORT).show();
        }
    }

    // ---------- ОТКРЫТЬ ----------
    public void open_text(View view) {
        String FILE_NAME = fail.getText().toString();

        int selectedId = radioGroup.getCheckedRadioButtonId();
        if (selectedId == R.id.vnut) {
            try (FileInputStream fin = openFileInput(FILE_NAME)) {
                byte[] bytes = new byte[fin.available()];
                fin.read(bytes);
                text1.setText(new String(bytes, StandardCharsets.UTF_8));
                Toast.makeText(this, "Файл загружен из внутреннего хранилища!",
                        Toast.LENGTH_SHORT).show();
            } catch (IOException ex) {
                Toast.makeText(this, "Ошибка чтения: " + ex.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
        } else if (selectedId == R.id.vneh) {
            File file = getExternalFile();
            if (!file.exists()) {
                Toast.makeText(this, "Файл не существует во внешнем хранилище",
                        Toast.LENGTH_SHORT).show();
                return;
            }
            try (FileInputStream fin = new FileInputStream(file)) {
                byte[] bytes = new byte[(int) file.length()];
                fin.read(bytes);
                String text = new String(bytes, StandardCharsets.UTF_8);
                text1.setText(text);
                Toast.makeText(this, "Файл загружен из внешнего хранилища!",
                        Toast.LENGTH_SHORT).show();
            } catch (IOException ex) {
                Toast.makeText(this, "Ошибка чтения: " + ex.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(this, "Ничего не выбрано ", Toast.LENGTH_SHORT).show();
        }
    }

    // ---------- УДАЛИТЬ ----------
    public void delete_text(View view) {
        String FILE_NAME = fail.getText().toString();

        int selectedId = radioGroup.getCheckedRadioButtonId();
        if (selectedId == R.id.vnut) {
            if (deleteFile(FILE_NAME)) {
                text1.setText("");
                Toast.makeText(this, "Файл удален из внутреннего хранилища!",
                        Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Файл не найден во внутр. хран. ",
                        Toast.LENGTH_SHORT).show();
            }
        } else if (selectedId == R.id.vneh) {
            File file = getExternalFile();
            if (file.exists()) {
                if (file.delete()) {
                    text1.setText("");
                    Toast.makeText(this, "Файл удален из внешнего хранилища!",
                            Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(this, "Ошибка при удалении файла",
                            Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(this, "Файл не найден во внешнем хран. ",
                        Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(this, "Ничего не выбрано ", Toast.LENGTH_SHORT).show();
        }
    }
}