AndEngine AndEngine - 2 months ago 21
Android Question

file.delete() from android internal storage return false

I have a method to download a image from url and save it in a folder at Internal storage

public void saveDynamicImage(String url,String fileName, String folderName) {

InputStream iStream;

BufferedInputStream buffInputStream;
ByteArrayBuffer byteArray = null;

try {
HttpGet httpGet = new HttpGet(url);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = httpClient.execute(httpGet);
iStream = httpResponse.getEntity().getContent();

buffInputStream = new BufferedInputStream(iStream, 8 * 1024);
byteArray = new ByteArrayBuffer(50);
int current = 0;
while ((current = buffInputStream.read()) != -1) {
byteArray.append((byte) current);
}

} catch (ClientProtocolException e1) {
} catch (IOException e1) {
}

File dynamicImageDir = context.getDir(AppConstants.DYNAMIC_IMAGE, Context.MODE_PRIVATE);
File appNamefileDir = new File(dynamicImageDir, BaseActivity.appDataStore.getAppName());
appNamefileDir.mkdirs();
File controlNameDir = new File(appNamefileDir, folderName);
controlNameDir.mkdirs();
File file = new File(controlNameDir, fileName);

try {
FileOutputStream outputStream = new FileOutputStream(file);
outputStream.write(byteArray.toByteArray());
outputStream.close();
System.out.println("DynamicImage saving over!..");
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}


i want to delete the whole directory at a point of time. My method to delete entire directory is

public void deleteDynamicImage() throws NullPointerException,FileNotFoundException {
File rootDirectory = context.getDir(AppConstants.DYNAMIC_IMAGE, Context.MODE_WORLD_WRITEABLE);
boolean status = rootDirectory.delete();
Log.e("", "delete : "+status);

}


i am getting the status as 'false'. files are created and working fine. only problem in deletion. Is there any thing I am missing?

Answer

Is your file a directory?

If it's, you need to delete file in this folder first
this code is work well

public void deleteDirectory(File file) {
    if( file.exists() ) {
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for(int i=0; i<files.length; i++) {
                if(files[i].isDirectory()) {
                    deleteDirectory(files[i]);
                }
                else {
                    files[i].delete();
                }
            }
        }
            file.delete();
    }
}
Comments