Próbowałem File.delete()
, ale to nie działa. Jak usunąć katalog na karcie SD?Usunięcie folderu na karcie SD
Pracuję na systemie Android 2.1.
Próbowałem File.delete()
, ale to nie działa. Jak usunąć katalog na karcie SD?Usunięcie folderu na karcie SD
Pracuję na systemie Android 2.1.
Trzeba mieć cały katalog pusty przed usunięciem directory się znaleźć here
w Android, trzeba mieć odpowiednie uprawnienia, a także - WRITE_EXTERNAL_STORAGE
w manifeście.
EDIT: dla wygody skopiowane kod tutaj, ale wciąż jest z linku powyżej
public static 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());
}
Próbowałem usunąć pliki z folderu, ale Logcat pokazuje "nie można odłączyć" /geo1.xml ': System plików tylko do odczytu (errno = 30) '. Dodałem uprawnienie "WRITE_EXTERNAL_STORAGE" w manifeście. – Greenhorn
Myślę, że '/ geo1.xml' nie znajduje się na karcie SD, ale w katalogu głównym ('/'). czy jesteś pewien, że wskazujesz właściwy plik? – MByD
Nie, '/ geo.xml' znajdował się w folderze, który próbowałem usunąć, ale brakowało mi czegoś w kodzie. Teraz działa dobrze. Dzięki. :) – Greenhorn
https://stackoverflow.com/a/16411911/2397275
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
w AndroidManifest.xml złożyć
katalogi muszą być puste, zanim zostaną usunięte. Trzeba rekurencyjnie pusty i usunąć wszystkie katalogi w drzewie:
boolean delete(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null)
for (File f : files) delete(f);
}
return file.delete();
}
Aktualizacja:
Wydaje się file.isDirectory() == (file.listFiles() == null)
, ale file.listFiles()
dzienniki "fail readDirectory() errno=20
" kiedy file.isDirectory() == false
.
to działało dobrze dla mnie, mam nadzieję, że będzie działać dla Ciebie.
File dir = new File(Environment.getExternalStorageDirectory()+"DirName");
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
new File(dir, children[i]).delete();
}
}
dir.list może zwrócić wartość null, dlatego wywołanie children.length w pętli bez sprawdzenia, czy dzieci mają wartość null czy nie, może wygenerować wyjątek. –
on pracował dla mnie:
Add in manifest-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
private boolean deleteDirectory(File path) {
if(path.exists()) {
File[] files = path.listFiles();
if (files == null) {
return false;
}
for(File file : files) {
if(file.isDirectory()) {
deleteDirectory(file);
}
else {
file.delete();
}
}
}
return path.exists()?path.delete():false;
}
Możliwy duplikat [? Jak usunąć całą zawartość folderu i] (https://stackoverflow.com/questions/4943629/how-to-delete -a-cały-folder-i-treść) – bummi