Android 获取NullPointerException检查文件是否存在
我正在尝试改进我的“删除”按钮,因此,如果我按下按钮,文件不在那里,它会启动一个Toast,说没有要删除的文件,我尝试了以下方法:Android 获取NullPointerException检查文件是否存在,android,file,nullpointerexception,Android,File,Nullpointerexception,我正在尝试改进我的“删除”按钮,因此,如果我按下按钮,文件不在那里,它会启动一个Toast,说没有要删除的文件,我尝试了以下方法: mBtnBorrar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(file.exists()){
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 I get a
nullpointerexception
删除该文件,但如果我首先创建该文件,然后成功删除该文件,然后再次按下delete(删除)按钮,则会显示没有文件的异常,但在应用程序启动时,如果我按下按钮而不创建文件,它不会检查文件是否存在以删除。直到您执行代码file=file.createTempFile(“音频”,“.3gp”,路径)
,则文件
将为空
。如果在创建文件之前测试delete按钮,则会出现这种情况。简单的空检查是处理此问题的常用方法
编辑:将空检查更改为onClick()
另一种方法是设置一个标志,指示是否首先创建了文件,然后在onClick()
中检查该标志
参考页)什么是archivo.getAbsoluteFile().delete()@僵尸对不起,上面写着archivo是文件的地方,我忘了更改它。试着像你在第二部分中那样在
onClick
中签入它code@zombie无法让它工作检查应该在onClick方法hi@Gary99中我在onClick方法中遇到问题,如果(file.exists()),它会在此处给出一个null指针异常{…嗨,我解决了它,如果在OnCalk!谢谢我的错误中输入了(文件!=空){是的,<代码> OnCcCK()/代码>就是它应该在哪里。我在回答的中间被邀请吃饭并且匆忙地复制和粘贴当前代码。我将修改它。
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();
}
}