내 응용 프로그램에 대해 응용 프로그램 기능을 재설정하려고하는데 files folder
, databases folder
및 shared preferences
등의 모든 파일을 내부 저장소에서 삭제하려고합니다. 문제는 이러한 폴더를 삭제하려고 시도 할 때마다 삭제되는 것이 아니라는 것입니다. 때로는 파일을 삭제하는 데 사용하는 함수가 false를 반환합니다. 이 경우 내 응용 프로그램이 제대로 작동하지 않을 수 있습니다. 여기에 내가 사용하고 무엇을 :데이터베이스 폴더 내부 저장소 삭제
@SuppressWarnings("static-access")
public void deleteAllData(){
String cache = this.getCacheDir().toString();
Log.e("","dbPath : "+cache);
File ChFolder = new File(cache);
boolean cachee = deleteDirectory(ChFolder);
Log.e("","Database Folder Delete Success : "+cachee);
String server = rpc.getCurrentServerName(this);
int userId = rpc.getUserId(this);
String userDbPath = "/data/data/"+this.getPackageName()+"/databases/"+Integer.toString(userId)+"_"+server;
File userDbFile = new File(userDbPath);
boolean userDbFileTF = userDbFile.delete();
Log.e("","user Database Folder : "+userDbFileTF);
String sysDbPath = "/data/data/"+this.getPackageName()+"/databases/stampii_sys_tpl.sqlite";
File sysDbFile = new File(sysDbPath);
boolean sysDbFileTF = sysDbFile.delete();
Log.e("","user Database Folder : "+sysDbFileTF);
// Delete Databases Folder :
String dbPath = "/data/data/"+this.getPackageName()+"/databases/";
Log.e("","dbPath : "+dbPath);
File dbFolder = new File(dbPath);
boolean dbFold = deleteDirectory(dbFolder);
Log.e("","Database Folder Delete Success : "+dbFold);
// Delete Files Folder :
String name = this.getFilesDir().toString()+"https://stackoverflow.com/users/";
Log.e("","path : "+name);
File files = new File(name);
boolean filesFol = deleteDirectory(files);
Log.e("","filesFol : "+filesFol);
}
static public boolean deleteDirectory(File path) {
if(path.exists()) {
File[] files = path.listFiles();
if (files == null) {
return true;
}
for(int i=0; i<files.length; i++) {
if(files[i].isDirectory()) {
deleteDirectory(files[i]);
}
else {
files[i].delete();
}
}
}
return(path.delete());
}
는 내가 부족 뭔가 어떻게 너무 데이터베이스를 삭제합니다 안드로이드 설정에서 Clear Data
같은 기능을 구현할 수있다.
'deleteDirectory()'함수를 살펴보면 같은 방법을 사용하고 있습니다. –
그래서 당신은 ... 당신이 삭제하려고하는 디렉토리와 그것의 내용을 기록하지 그래? 그런 다음 삭제할 때 파일을 기록하여 메서드가 작동하는지 확인하고 삭제하려고 할 때 디렉토리가 실제로 비어 있는지 확인합니다. – Craigy
사실 저는 이것을하고 있어요. 항상 삭제할 때 가끔씩 삭제하려고 할 때 false를 반환합니다. 나는 특별한 일을하지 않기 때문에 그것이 작동하지 않는 이유를 알아낼 수 없습니다. –