File.delete()
を試しましたが、うまくいきません。 SDカードのディレクトリを削除する方法
私はAndroid 2.1。
ディレクトリ自体を削除する前に、すべてのディレクトリを空にする必要があります。 here を参照してください
Androidでは、適切な権限も必要です-WRITE_EXTERNAL_STORAGE
マニフェスト内。
編集:便宜上、ここにコードをコピーしましたが、まだ上記のリンクからです
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() );
}
ディレクトリは、削除する前に空にする必要があります。ツリー内のすべてのディレクトリを再帰的に空にして削除する必要があります。
_boolean delete(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null)
for (File f : files) delete(f);
}
return file.delete();
}
_
更新:
file.isDirectory() == (file.listFiles() == null)
のように見えますが、file.listFiles()
はfail readDirectory() errno=20
のときに "file.isDirectory() == false
"を記録します。
https://stackoverflow.com/a/16411911/2397275
uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"
androidManifest.xmlファイル内
それは私のために働いた:
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;
}
それは私のためにうまく働いた、私はそれがあなたのために働くことを願っています。
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();
}
}