如何删除文件?

时间:2019-12-15 16:12:26

标签: java android

delete()不起作用,因为它不删除文件,并且存在的方法返回false。我的错误在哪里?有问题代码。我也将所有代码粘贴到pastebin上 对不起我的英语不好。所有代码均为here

public class MainActivity extends AppCompatActivity {

private EditText etText, etFileName;

@Override
protected void onCreate(Bundle savedInstanceState) {}

private void openFile(String fileName) {}

private void saveFile(String fileName) {}

private void clear() {}

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 (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;
    }
}

}

1 个答案:

答案 0 :(得分:0)

使用file.getAbsoluteFile().delete()而不是file.delete()来检查返回的布尔值,以确保文件已被删除, 因此,您的删除功能将是这样的

private void delete(String fileName) {
   try {
        File file = new File(fileName);
        if(!file.exists()){
            Toast.makeText(getApplicationContext(), "File doesn't exists", Toast.LENGTH_SHORT).show();
        } else if(file.getAbsoluteFile().delete())
            Toast.makeText(getApplicationContext(), "File has been deleted", Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(getApplicationContext(), "File couldn't be deleted", Toast.LENGTH_SHORT).show();
      } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "Такого файла не существует!", Toast.LENGTH_SHORT).show();
    }
}

还请确保您的应用对外部存储具有写权限

在此处查看有关权限的更多信息:Storage permission error in Marshmallow