package zj.xuitls.common.util; import android.os.Build; import android.os.Environment; import android.os.StatFs; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import zj.xuitls.x; public class FileUtil { private FileUtil() { } public static File getCacheDir(String str) { File externalCacheDir; File file = (!isDiskAvailable() || (externalCacheDir = x.app().getExternalCacheDir()) == null) ? null : new File(externalCacheDir, str); if (file == null) { file = new File(x.app().getCacheDir(), str); } if (file.exists() || file.mkdirs()) { return file; } return null; } public static boolean isDiskAvailable() { return getDiskAvailableSize() > 10485760; } public static long getDiskAvailableSize() { long j; long j2; if (!existsSdcard().booleanValue()) { return 0; } StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath()); if (Build.VERSION.SDK_INT >= 18) { j = statFs.getBlockSizeLong(); j2 = statFs.getAvailableBlocksLong(); } else { j = (long) statFs.getBlockSize(); j2 = (long) statFs.getAvailableBlocks(); } return j2 * j; } public static Boolean existsSdcard() { return Boolean.valueOf(Environment.getExternalStorageState().equals("mounted")); } public static long getFileOrDirSize(File file) { long j = 0; if (!file.exists()) { return 0; } if (!file.isDirectory()) { return file.length(); } File[] listFiles = file.listFiles(); if (listFiles != null) { for (File file2 : listFiles) { j += getFileOrDirSize(file2); } } return j; } public static boolean copy(String str, String str2) { FileOutputStream fileOutputStream; Throwable th; File file = new File(str); boolean z = false; if (!file.exists()) { return false; } File file2 = new File(str2); IOUtil.deleteFileOrDir(file2); File parentFile = file2.getParentFile(); if (parentFile.exists() || parentFile.mkdirs()) { FileInputStream fileInputStream = null; try { FileInputStream fileInputStream2 = new FileInputStream(file); try { fileOutputStream = new FileOutputStream(file2); } catch (Throwable th2) { th = th2; fileOutputStream = null; fileInputStream = fileInputStream2; try { LogUtil.d(th.getMessage(), th); IOUtil.closeQuietly(fileInputStream); IOUtil.closeQuietly(fileOutputStream); return z; } catch (Throwable th3) { IOUtil.closeQuietly(fileInputStream); IOUtil.closeQuietly(fileOutputStream); throw th3; } } try { IOUtil.copy(fileInputStream2, fileOutputStream); z = true; IOUtil.closeQuietly(fileInputStream2); } catch (Throwable th4) { th = th4; fileInputStream = fileInputStream2; LogUtil.d(th.getMessage(), th); IOUtil.closeQuietly(fileInputStream); IOUtil.closeQuietly(fileOutputStream); return z; } } catch (Throwable th5) { th = th5; fileOutputStream = null; LogUtil.d(th.getMessage(), th); IOUtil.closeQuietly(fileInputStream); IOUtil.closeQuietly(fileOutputStream); return z; } IOUtil.closeQuietly(fileOutputStream); } return z; } public static boolean deleteFileOrDir(File file) { if (file == null || !file.exists()) { return true; } if (file.isFile()) { return file.delete(); } File[] listFiles = file.listFiles(); if (listFiles != null) { for (File file2 : listFiles) { deleteFileOrDir(file2); } } return file.delete(); } }