翰林优商.apk(点击下载) / FileUtil.java


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();
    }
}