میتوانید از متدهای زیر، برای حذف کامل یک پوشه استفاده کنید:
// public static boolean deleteDirectory(File path) { if (path.exists()) { File[] files = path.listFiles(); if (files == null) return true; for (File file : files) { if (file.isDirectory()) { deleteDirectory(file); } else { file.delete(); } } } return (path.delete()); } public static boolean deleteDirectory(String path) { return deleteDirectory(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + path)); } //
متد deleteDirectory که به دو صورت اورلود شده است، با دریافت مسیر مستقیم یک دایرکتوری به صورت رشته، یا دریافت آبجکتی از جنس File که به مسیر آن پوشه اشاره دارد، اقدام به حذف کامل آن میکند. سپس در صورتی که عملیات با موفقیت انجام شد، مقدار true و در غیر اینصورت، مقدار false از این متد بازگشت داده میشود.
همچنین دسترسی زیر را نیز باید به پروژه اضافه کنید: (این دسترسی جزء دسترسیهای خطرناک میباشد؛ لذا باید در حالت رئال تایم نیز از کاربر خواسته شود)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
توجه
برای حذف کامل یک پوشه، بایستی ابتدا محتوای داخل آن، اعم از پوشهها و فایلهای دیگر حذف شوند؛ بنابراین اگر داخل آن پوشه، پوشهی دیگری هم وجود داشته باشد، این قانون برای آن نیز صدق میکند. لذا بدر اینجا برای حذف یک پوشه، ابتدا پوشهها و فایلهای موجود در آن را به دست آورده و سپس برای هر پوشهی جدیدی، خود تابع deleteDirectory را در نقش یک تابع بازگشتی فراخوانی کرده است.
مثال
فرض کنید بخواهیم پوشهی Temp را که در مسیر FuLLKade/Temp از حافظه گوشی قرار دارد حذف کنیم؛ بنابراین میتوان به صورت زیر از مت بالا استفاده کرد:
// String dirSD = Environment.getExternalStorageDirectory().getAbsolutePath(); boolean result = deleteDirectory(new File(dirSD + "/FuLLKade/Temp")); Toast.makeText(MainActivity.this, result + "", Toast.LENGTH_LONG).show(); //
آن را میتوانیم به صورت زیر هم بنویسیم:
// boolean result = deleteDirectory("FuLLKade/Temp"); //
نظرات ثبت شده بدون دیدگاه