320 lines
14 KiB
Java
320 lines
14 KiB
Java
package com.huawei.hms.framework.common;
|
|
|
|
import android.content.Context;
|
|
import android.text.TextUtils;
|
|
import com.huawei.libcore.io.ExternalStorageFile;
|
|
import com.huawei.libcore.io.ExternalStorageFileInputStream;
|
|
import com.huawei.libcore.io.ExternalStorageFileOutputStream;
|
|
import com.huawei.libcore.io.ExternalStorageRandomAccessFile;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.RandomAccessFile;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class CreateFileUtil {
|
|
private static final String EXTERNAL_FILE_NAME = "com.huawei.libcore.io.ExternalStorageFile";
|
|
private static final String EXTERNAL_INPUTSTREAM_NAME = "com.huawei.libcore.io.ExternalStorageFileInputStream";
|
|
private static final String EXTERNAL_OUTPUTSTREAM_NAME = "com.huawei.libcore.io.ExternalStorageFileOutputStream";
|
|
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
|
private static final String RANDOM_ACCESS_FILE_NAME = "com.huawei.libcore.io.ExternalStorageRandomAccessFile";
|
|
private static final String TAG = "CreateFileUtil";
|
|
|
|
public static String getCacheDirPath(Context context) {
|
|
return context == null ? "" : ContextCompat.getProtectedStorageContext(context).getCacheDir().getPath();
|
|
}
|
|
|
|
public static File newFile(String str) {
|
|
if (str == null) {
|
|
return null;
|
|
}
|
|
if (EmuiUtil.isUpPVersion() && ReflectionUtils.checkCompatible(EXTERNAL_FILE_NAME)) {
|
|
return new ExternalStorageFile(str);
|
|
}
|
|
return new File(str);
|
|
}
|
|
|
|
public static File newSafeFile(String str) {
|
|
if (str == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
File newFile = newFile(str);
|
|
return !newFile.exists() ? new File(str) : newFile;
|
|
} catch (RuntimeException unused) {
|
|
Logger.w(TAG, "newFile is runtimeException");
|
|
return new File(str);
|
|
} catch (Throwable unused2) {
|
|
Logger.w(TAG, "newFile is Throwable");
|
|
return new File(str);
|
|
}
|
|
}
|
|
|
|
public static String getCanonicalPath(String str) {
|
|
try {
|
|
return newFile(str).getCanonicalPath();
|
|
} catch (IOException e) {
|
|
Logger.w(TAG, "the canonicalPath has IOException", e);
|
|
return str;
|
|
} catch (SecurityException e2) {
|
|
Logger.w(TAG, "the canonicalPath has securityException", e2);
|
|
return str;
|
|
} catch (Exception e3) {
|
|
Logger.w(TAG, "the canonicalPath has other Exception", e3);
|
|
return str;
|
|
}
|
|
}
|
|
|
|
public static FileInputStream newFileInputStream(String str) throws FileNotFoundException {
|
|
if (str == null) {
|
|
Logger.w(TAG, "newFileInputStream file is null");
|
|
throw new FileNotFoundException("file is null");
|
|
}
|
|
if (EmuiUtil.isUpPVersion() && ReflectionUtils.checkCompatible(EXTERNAL_INPUTSTREAM_NAME)) {
|
|
return new ExternalStorageFileInputStream(str);
|
|
}
|
|
return new FileInputStream(str);
|
|
}
|
|
|
|
public static FileInputStream newSafeFileInputStream(String str) throws FileNotFoundException {
|
|
try {
|
|
return newFileInputStream(str);
|
|
} catch (FileNotFoundException unused) {
|
|
Logger.w(TAG, "newFileInputStream is fileNotFoundException");
|
|
return new FileInputStream(str);
|
|
} catch (RuntimeException unused2) {
|
|
Logger.w(TAG, "newFileInputStream is runtimeException");
|
|
return new FileInputStream(str);
|
|
} catch (Throwable unused3) {
|
|
Logger.w(TAG, "newFileInputStream is Throwable");
|
|
return new FileInputStream(str);
|
|
}
|
|
}
|
|
|
|
public static FileOutputStream newFileOutputStream(File file) throws FileNotFoundException {
|
|
if (file == null) {
|
|
Logger.e(TAG, "newFileOutputStream file is null");
|
|
throw new FileNotFoundException("file is null");
|
|
}
|
|
if (EmuiUtil.isUpPVersion() && ReflectionUtils.checkCompatible(EXTERNAL_OUTPUTSTREAM_NAME)) {
|
|
return new ExternalStorageFileOutputStream(file);
|
|
}
|
|
return new FileOutputStream(file);
|
|
}
|
|
|
|
public static FileOutputStream newSafeFileOutputStream(File file) throws FileNotFoundException {
|
|
try {
|
|
return newFileOutputStream(file);
|
|
} catch (FileNotFoundException unused) {
|
|
Logger.w(TAG, "newFileOutputStream is fileNotFoundException");
|
|
return new FileOutputStream(file);
|
|
} catch (RuntimeException unused2) {
|
|
Logger.w(TAG, "newFileOutputStream is runtimeException");
|
|
return new FileOutputStream(file);
|
|
} catch (Throwable unused3) {
|
|
Logger.w(TAG, "newFileOutputStream is Throwable");
|
|
return new FileOutputStream(file);
|
|
}
|
|
}
|
|
|
|
public static RandomAccessFile newRandomAccessFile(String str, String str2) throws FileNotFoundException {
|
|
if (str == null) {
|
|
Logger.w(TAG, "newFileOutputStream file is null");
|
|
throw new FileNotFoundException("file is null");
|
|
}
|
|
if (EmuiUtil.isUpPVersion() && ReflectionUtils.checkCompatible(RANDOM_ACCESS_FILE_NAME)) {
|
|
return new ExternalStorageRandomAccessFile(str, str2);
|
|
}
|
|
return new RandomAccessFile(str, str2);
|
|
}
|
|
|
|
public static RandomAccessFile newSafeRandomAccessFile(String str, String str2) throws FileNotFoundException {
|
|
if (str == null) {
|
|
Logger.w(TAG, "newRandomAccessFile file is null");
|
|
throw new FileNotFoundException("file is null");
|
|
}
|
|
try {
|
|
return newRandomAccessFile(str, str2);
|
|
} catch (FileNotFoundException unused) {
|
|
Logger.w(TAG, "newRandomAccessFile is fileNotFoundException");
|
|
return new RandomAccessFile(str, str2);
|
|
} catch (RuntimeException unused2) {
|
|
Logger.w(TAG, "newRandomAccessFile is runtimeException");
|
|
return new RandomAccessFile(str, str2);
|
|
} catch (Throwable unused3) {
|
|
Logger.w(TAG, "newRandomAccessFile is Throwable");
|
|
return new RandomAccessFile(str, str2);
|
|
}
|
|
}
|
|
|
|
public static void deleteSecure(File file) {
|
|
if (file == null || !file.exists() || file.delete()) {
|
|
return;
|
|
}
|
|
Logger.w(TAG, "deleteSecure exception");
|
|
}
|
|
|
|
public static void deleteSecure(String str) {
|
|
if (TextUtils.isEmpty(str)) {
|
|
return;
|
|
}
|
|
deleteSecure(newFile(str));
|
|
}
|
|
|
|
@Deprecated
|
|
public static boolean isPVersion() {
|
|
return EmuiUtil.isUpPVersion();
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:16:0x002f, code lost:
|
|
|
|
if (r10 != null) goto L66;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:41:0x0075, code lost:
|
|
|
|
if (r10 == null) goto L56;
|
|
*/
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
/* JADX WARN: Removed duplicated region for block: B:48:0x0082 A[EXC_TOP_SPLITTER, SYNTHETIC] */
|
|
/* JADX WARN: Type inference failed for: r2v0 */
|
|
/* JADX WARN: Type inference failed for: r2v1, types: [java.io.InputStream] */
|
|
/* JADX WARN: Type inference failed for: r2v2 */
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public static java.lang.String getFileHashData(java.lang.String r10, java.lang.String r11) {
|
|
/*
|
|
java.lang.String r0 = "Close FileInputStream failed!"
|
|
java.lang.String r1 = "CreateFileUtil"
|
|
r2 = 0
|
|
java.security.MessageDigest r11 = java.security.MessageDigest.getInstance(r11) // Catch: java.lang.Throwable -> L3f java.lang.IndexOutOfBoundsException -> L41 java.lang.IllegalArgumentException -> L4c java.io.IOException -> L57 java.io.FileNotFoundException -> L62 java.security.NoSuchAlgorithmException -> L6d
|
|
java.io.FileInputStream r10 = newSafeFileInputStream(r10) // Catch: java.lang.Throwable -> L3f java.lang.IndexOutOfBoundsException -> L41 java.lang.IllegalArgumentException -> L4c java.io.IOException -> L57 java.io.FileNotFoundException -> L62 java.security.NoSuchAlgorithmException -> L6d
|
|
r3 = 1024(0x400, float:1.435E-42)
|
|
byte[] r3 = new byte[r3] // Catch: java.lang.Throwable -> L32 java.lang.IndexOutOfBoundsException -> L35 java.lang.IllegalArgumentException -> L37 java.io.IOException -> L39 java.io.FileNotFoundException -> L3b java.security.NoSuchAlgorithmException -> L3d
|
|
r4 = 0
|
|
r6 = r4
|
|
L14:
|
|
int r8 = r10.read(r3) // Catch: java.lang.Throwable -> L32 java.lang.IndexOutOfBoundsException -> L35 java.lang.IllegalArgumentException -> L37 java.io.IOException -> L39 java.io.FileNotFoundException -> L3b java.security.NoSuchAlgorithmException -> L3d
|
|
r9 = -1
|
|
if (r8 == r9) goto L22
|
|
r9 = 0
|
|
r11.update(r3, r9, r8) // Catch: java.lang.Throwable -> L32 java.lang.IndexOutOfBoundsException -> L35 java.lang.IllegalArgumentException -> L37 java.io.IOException -> L39 java.io.FileNotFoundException -> L3b java.security.NoSuchAlgorithmException -> L3d
|
|
long r8 = (long) r8 // Catch: java.lang.Throwable -> L32 java.lang.IndexOutOfBoundsException -> L35 java.lang.IllegalArgumentException -> L37 java.io.IOException -> L39 java.io.FileNotFoundException -> L3b java.security.NoSuchAlgorithmException -> L3d
|
|
long r6 = r6 + r8
|
|
goto L14
|
|
L22:
|
|
int r3 = (r6 > r4 ? 1 : (r6 == r4 ? 0 : -1))
|
|
if (r3 <= 0) goto L2f
|
|
byte[] r11 = r11.digest() // Catch: java.lang.Throwable -> L32 java.lang.IndexOutOfBoundsException -> L35 java.lang.IllegalArgumentException -> L37 java.io.IOException -> L39 java.io.FileNotFoundException -> L3b java.security.NoSuchAlgorithmException -> L3d
|
|
java.lang.String r11 = byteArrayToHex(r11) // Catch: java.lang.Throwable -> L32 java.lang.IndexOutOfBoundsException -> L35 java.lang.IllegalArgumentException -> L37 java.io.IOException -> L39 java.io.FileNotFoundException -> L3b java.security.NoSuchAlgorithmException -> L3d
|
|
r2 = r11
|
|
L2f:
|
|
if (r10 == 0) goto L7e
|
|
goto L77
|
|
L32:
|
|
r11 = move-exception
|
|
r2 = r10
|
|
goto L7f
|
|
L35:
|
|
r11 = move-exception
|
|
goto L44
|
|
L37:
|
|
r11 = move-exception
|
|
goto L4f
|
|
L39:
|
|
r11 = move-exception
|
|
goto L5a
|
|
L3b:
|
|
r11 = move-exception
|
|
goto L65
|
|
L3d:
|
|
r11 = move-exception
|
|
goto L70
|
|
L3f:
|
|
r10 = move-exception
|
|
goto L80
|
|
L41:
|
|
r10 = move-exception
|
|
r11 = r10
|
|
r10 = r2
|
|
L44:
|
|
java.lang.String r3 = "getFileHashData IndexOutOfBoundsException"
|
|
com.huawei.hms.framework.common.Logger.e(r1, r3, r11) // Catch: java.lang.Throwable -> L32
|
|
if (r10 == 0) goto L7e
|
|
goto L77
|
|
L4c:
|
|
r10 = move-exception
|
|
r11 = r10
|
|
r10 = r2
|
|
L4f:
|
|
java.lang.String r3 = "getFileHashData IllegalArgumentException"
|
|
com.huawei.hms.framework.common.Logger.e(r1, r3, r11) // Catch: java.lang.Throwable -> L32
|
|
if (r10 == 0) goto L7e
|
|
goto L77
|
|
L57:
|
|
r10 = move-exception
|
|
r11 = r10
|
|
r10 = r2
|
|
L5a:
|
|
java.lang.String r3 = "getFileHashData IOException"
|
|
com.huawei.hms.framework.common.Logger.e(r1, r3, r11) // Catch: java.lang.Throwable -> L32
|
|
if (r10 == 0) goto L7e
|
|
goto L77
|
|
L62:
|
|
r10 = move-exception
|
|
r11 = r10
|
|
r10 = r2
|
|
L65:
|
|
java.lang.String r3 = "getFileHashData FileNotFoundException"
|
|
com.huawei.hms.framework.common.Logger.e(r1, r3, r11) // Catch: java.lang.Throwable -> L32
|
|
if (r10 == 0) goto L7e
|
|
goto L77
|
|
L6d:
|
|
r10 = move-exception
|
|
r11 = r10
|
|
r10 = r2
|
|
L70:
|
|
java.lang.String r3 = "getFileHashData NoSuchAlgorithmException"
|
|
com.huawei.hms.framework.common.Logger.e(r1, r3, r11) // Catch: java.lang.Throwable -> L32
|
|
if (r10 == 0) goto L7e
|
|
L77:
|
|
r10.close() // Catch: java.io.IOException -> L7b
|
|
goto L7e
|
|
L7b:
|
|
com.huawei.hms.framework.common.Logger.e(r1, r0)
|
|
L7e:
|
|
return r2
|
|
L7f:
|
|
r10 = r11
|
|
L80:
|
|
if (r2 == 0) goto L89
|
|
r2.close() // Catch: java.io.IOException -> L86
|
|
goto L89
|
|
L86:
|
|
com.huawei.hms.framework.common.Logger.e(r1, r0)
|
|
L89:
|
|
throw r10
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.huawei.hms.framework.common.CreateFileUtil.getFileHashData(java.lang.String, java.lang.String):java.lang.String");
|
|
}
|
|
|
|
public static String byteArrayToHex(byte[] bArr) {
|
|
char[] cArr = new char[bArr.length << 1];
|
|
int length = bArr.length;
|
|
int i = 0;
|
|
int i2 = 0;
|
|
while (i2 < length) {
|
|
byte b = bArr[i2];
|
|
char[] cArr2 = HEX_DIGITS;
|
|
cArr[i] = cArr2[(b >>> 4) & 15];
|
|
cArr[i + 1] = cArr2[b & 15];
|
|
i2++;
|
|
i += 2;
|
|
}
|
|
return new String(cArr);
|
|
}
|
|
}
|