From 837de7ce5def874a64fc142e90a921c2db843ae4 Mon Sep 17 00:00:00 2001 From: okjackcaptain <378702538@qq.com> Date: Sat, 3 Dec 2022 10:37:29 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8DTV=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=97=AA=E9=80=80bug=20(by=20okjack)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../osc/ui/fragment/ModelSettingFragment.java | 8 ++++- .../com/github/tvbox/osc/util/FileUtils.java | 32 +++++++++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java index 9a6e1e41..733a7d0e 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java @@ -668,7 +668,13 @@ public class ModelSettingFragment extends BaseLazyFragment { return; } try { - FileUtils.cleanDirectory(cacheDir); + new Thread(() -> { + try { + FileUtils.cleanDirectory(cacheDir); + } catch (Exception e) { + e.printStackTrace(); + } + }).start(); Toast.makeText(getContext(), "缓存已清空", Toast.LENGTH_LONG).show(); return; } catch (Exception e) { diff --git a/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java b/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java index b15f15fb..d5b16d04 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java +++ b/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java @@ -133,8 +133,36 @@ public class FileUtils { return getCacheDir().getAbsolutePath(); } - public static void cleanDirectory(File dir) throws IOException { - org.apache.commons.io.FileUtils.cleanDirectory(dir); + public static void cleanDirectory(File dir) { + if (!dir.exists()) return; + File[] files = dir.listFiles(); + if (files == null || files.length == 0) return; + for(File one : files) { + try { + deleteFile(one); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public static void deleteFile(File file) { + if (!file.exists()) return; + if (file.isFile()) { + if (file.canWrite()) file.delete(); + return; + } + if (file.isDirectory()) { + File[] files = file.listFiles(); + if (files == null || files.length == 0) { + if (file.canWrite()) file.delete(); + return; + } + for(File one : files) { + deleteFile(one); + } + } + return; } public static void cleanPlayerCache() {