我正在尝试改进我的删除按钮,因此如果我按下该按钮并且文件不存在,它应该启动一个 Toast 提示没有要删除的文件,我试过这个:
mBtnBorrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(file.exists()){
file.getAbsoluteFile().delete();
Toast.makeText(MainActivity.this, "File deleted..", Toast.LENGTH_SHORT).show();
}else
{
Toast.makeText(MainActivity.this, "There is no file to delete.", Toast.LENGTH_SHORT).show();
}
}
});
我的文件在这里声明:
File file;
File path = new File(Environment.getExternalStorageDirectory()
.getPath());
if (!path.exists() && !path.mkdirs()) {
throw new IOException("No se pudo crear el directorio del archivo.");
}else{
try {
file = File.createTempFile("audio", ".3gp", path);
} catch (IOException e) {
}
}
现在的问题是,如果我尝试使用 if 我得到一个 nullpointerexception
来删除文件,但是如果我先创建文件,那么我会成功删除它,然后当我再次按下删除按钮它显示没有文件的异常,但在应用程序启动时,如果我在没有创建文件的情况下按下按钮,它不会检查文件是否存在要删除。
最佳答案
直到您执行代码 file = File.createTempFile("audio", ".3gp", path);
,然后 file
将为 null
。如果您在创建文件之前测试删除按钮,就会出现这种情况。简单的空检查是处理此问题的常用方法。
编辑: 将空检查更改为 onClick()
if(file != null) {
if(file.exists()){
file.getAbsoluteFile().delete();
Toast.makeText(MainActivity.this, "File deleted..", Toast.LENGTH_SHORT).show();
}else
{
Toast.makeText(MainActivity.this, "There is no file to delete.", Toast.LENGTH_SHORT).show();
}
}
另一种方法是设置一个标志,指示文件是否已首先创建,然后在 onClick()
中检查该标志。
仅供引用,link引用页)
关于android - 获取 NullPointerException 检查文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42636154/