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;
}
}
}
答案 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