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


package com.duoyou.task.sdk.xutils.common.util;

import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import com.duoyou.task.sdk.xutils.x;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileUtil {
    private FileUtil() {
    }

    /* JADX WARN: Multi-variable type inference failed */
    /* JADX WARN: Type inference failed for: r0v2, types: [java.io.OutputStream, java.io.Closeable, java.io.FileOutputStream] */
    /* JADX WARNING: Unknown variable types count: 1 */
    public static boolean copy(String str, String str2) {
        Throwable th;
        FileInputStream fileInputStream;
        ?? fileOutputStream;
        File file = new File(str);
        if (!file.exists()) {
            return false;
        }
        File file2 = new File(str2);
        IOUtil.deleteFileOrDir(file2);
        File parentFile = file2.getParentFile();
        if (!parentFile.exists() && !parentFile.mkdirs()) {
            return false;
        }
        FileInputStream fileInputStream2 = null;
        try {
            fileInputStream = new FileInputStream(file);
            try {
                fileOutputStream = new FileOutputStream(file2);
            } catch (Throwable th2) {
                th = th2;
                try {
                    LogUtil.d(th.getMessage(), th);
                    return false;
                } finally {
                    IOUtil.closeQuietly(fileInputStream);
                    IOUtil.closeQuietly(fileInputStream2);
                }
            }
            try {
                IOUtil.copy(fileInputStream, fileOutputStream);
                IOUtil.closeQuietly(fileInputStream);
                IOUtil.closeQuietly((Closeable) fileOutputStream);
                return true;
            } catch (Throwable th3) {
                th = th3;
                fileInputStream2 = fileOutputStream;
                LogUtil.d(th.getMessage(), th);
                return false;
            }
        } catch (Throwable th4) {
            th = th4;
            fileInputStream = fileInputStream2;
            LogUtil.d(th.getMessage(), th);
            return false;
        }
    }

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

    public static Boolean existsSdcard() {
        return Boolean.valueOf(Environment.getExternalStorageState().equals("mounted"));
    }

    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 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 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 isDiskAvailable() {
        return getDiskAvailableSize() > 10485760;
    }
}