@Web__Nikita03

Почему не удаляется файл?

Не работает метод delete. Файл не удаляется, а метод exists возвращает false. В чем может быть проблема?
package com.example.notes;

public class MainActivity extends AppCompatActivity {

    private EditText etText, etFileName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        etText = findViewById(R.id.filetext);
        etFileName = findViewById(R.id.filename);
    }

    private void openFile(String fileName) {
        try {
            InputStream inStream = openFileInput(fileName);
            InputStreamReader inReader =
                    new InputStreamReader(inStream);

            BufferedReader reader = new BufferedReader(inReader);
            String str;
            StringBuffer buffer = new StringBuffer();

            while ((str = reader.readLine()) != null) {
                buffer.append(str + "\n");
            }

            buffer.setCharAt(buffer.length() - 1,  ' ');

            inReader.close();
            etText.setText(buffer.toString());
        }
        catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    "Ошибка открытия файла "+fileName, Toast.LENGTH_LONG)
                    .show();
        }
    }

    private void saveFile(String fileName) {
        try {
            OutputStream outStream = openFileOutput(fileName, MODE_PRIVATE);
            OutputStreamWriter outWriter =
                    new OutputStreamWriter(outStream);

            outWriter.write(etText.getText().toString());
            outWriter.close();

            Toast.makeText(getApplicationContext(),
                    "Файл сохранен " + fileName, Toast.LENGTH_LONG)
                    .show();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    "Ошибка создания файла "+fileName, Toast.LENGTH_LONG)
                    .show();
        }
    }

    private void clear() {
        etText.setText("");
    }

    private void delete(String fileName) {
        try {
            Log.d("MYTAG", fileName);
            File file = new File(fileName);
            Log.d("MYTAG", new File(".").getAbsolutePath());
            Log.d("MYTAG", Boolean.toString(file.exists()));
            file.delete();
            Log.d("MYTAG", Boolean.toString(file.exists()));

        } catch (NullPointerException e) {
            Toast.makeText(getApplicationContext(), "Удаление прошло не удачно", Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), "Такого файла не существует!", Toast.LENGTH_SHORT).show();
        }
    }

    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.save:
                saveFile(etFileName.getText().toString() + ".txt");
                break;
            case R.id.open:
                openFile(etFileName.getText().toString() + ".txt");
                break;
            case R.id.del:
                delete(etFileName.getText().toString() + ".txt");
                break;
            case R.id.clear:
                clear();
                break;
        }
    }
}
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Terran37
Программист
А что вы получаете в методе delete ?
Т.е. у вас в "fileName" указан путь и название файла или только название файла?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы