我试图改进我的删除按钮,所以如果我按下按钮而文件不在那里它应该启动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) {
}
}
现在的问题是,如果我尝试删除文件,如果我得到nullpointerexception
,但如果我先创建文件,那么我将其成功删除,然后当我再次按下删除按钮时显示没有文件的例外,但是在应用程序启动时,如果我按下按钮而不创建文件,则dosnt检查文件是否可以删除。
答案 0 :(得分:1)
在您执行代码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参考页面)