Files
adif-api-reverse-engineering/apk_decompiled/sources/kotlin/io/FilesKt__UtilsKt.java

433 lines
23 KiB
Java

package kotlin.io;
import com.google.firebase.dynamiclinks.DynamicLink;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import kotlin.Deprecated;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.collections.CollectionsKt;
import kotlin.collections.CollectionsKt___CollectionsKt;
import kotlin.jvm.functions.Function2;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.SourceDebugExtension;
import kotlin.text.StringsKt__StringsJVMKt;
import kotlin.text.StringsKt__StringsKt;
/* JADX INFO: Access modifiers changed from: package-private */
@Metadata(d1 = {"\u0000<\n\u0000\n\u0002\u0010\u000e\n\u0002\u0018\u0002\n\u0002\b\f\n\u0002\u0010\u000b\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0004\n\u0002\u0010 \n\u0000\n\u0002\u0018\u0002\n\u0002\b\f\u001a*\u0010\t\u001a\u00020\u00022\b\b\u0002\u0010\n\u001a\u00020\u00012\n\b\u0002\u0010\u000b\u001a\u0004\u0018\u00010\u00012\n\b\u0002\u0010\f\u001a\u0004\u0018\u00010\u0002H\u0007\u001a*\u0010\r\u001a\u00020\u00022\b\b\u0002\u0010\n\u001a\u00020\u00012\n\b\u0002\u0010\u000b\u001a\u0004\u0018\u00010\u00012\n\b\u0002\u0010\f\u001a\u0004\u0018\u00010\u0002H\u0007\u001a8\u0010\u000e\u001a\u00020\u000f*\u00020\u00022\u0006\u0010\u0010\u001a\u00020\u00022\b\b\u0002\u0010\u0011\u001a\u00020\u000f2\u001a\b\u0002\u0010\u0012\u001a\u0014\u0012\u0004\u0012\u00020\u0002\u0012\u0004\u0012\u00020\u0014\u0012\u0004\u0012\u00020\u00150\u0013\u001a&\u0010\u0016\u001a\u00020\u0002*\u00020\u00022\u0006\u0010\u0010\u001a\u00020\u00022\b\b\u0002\u0010\u0011\u001a\u00020\u000f2\b\b\u0002\u0010\u0017\u001a\u00020\u0018\u001a\n\u0010\u0019\u001a\u00020\u000f*\u00020\u0002\u001a\u0012\u0010\u001a\u001a\u00020\u000f*\u00020\u00022\u0006\u0010\u001b\u001a\u00020\u0002\u001a\u0012\u0010\u001a\u001a\u00020\u000f*\u00020\u00022\u0006\u0010\u001b\u001a\u00020\u0001\u001a\n\u0010\u001c\u001a\u00020\u0002*\u00020\u0002\u001a\u001d\u0010\u001c\u001a\b\u0012\u0004\u0012\u00020\u00020\u001d*\b\u0012\u0004\u0012\u00020\u00020\u001dH\u0002¢\u0006\u0002\b\u001e\u001a\u0011\u0010\u001c\u001a\u00020\u001f*\u00020\u001fH\u0002¢\u0006\u0002\b\u001e\u001a\u0012\u0010 \u001a\u00020\u0002*\u00020\u00022\u0006\u0010!\u001a\u00020\u0002\u001a\u0014\u0010\"\u001a\u0004\u0018\u00010\u0002*\u00020\u00022\u0006\u0010!\u001a\u00020\u0002\u001a\u0012\u0010#\u001a\u00020\u0002*\u00020\u00022\u0006\u0010!\u001a\u00020\u0002\u001a\u0012\u0010$\u001a\u00020\u0002*\u00020\u00022\u0006\u0010%\u001a\u00020\u0002\u001a\u0012\u0010$\u001a\u00020\u0002*\u00020\u00022\u0006\u0010%\u001a\u00020\u0001\u001a\u0012\u0010&\u001a\u00020\u0002*\u00020\u00022\u0006\u0010%\u001a\u00020\u0002\u001a\u0012\u0010&\u001a\u00020\u0002*\u00020\u00022\u0006\u0010%\u001a\u00020\u0001\u001a\u0012\u0010'\u001a\u00020\u000f*\u00020\u00022\u0006\u0010\u001b\u001a\u00020\u0002\u001a\u0012\u0010'\u001a\u00020\u000f*\u00020\u00022\u0006\u0010\u001b\u001a\u00020\u0001\u001a\u0012\u0010(\u001a\u00020\u0001*\u00020\u00022\u0006\u0010!\u001a\u00020\u0002\u001a\u001b\u0010)\u001a\u0004\u0018\u00010\u0001*\u00020\u00022\u0006\u0010!\u001a\u00020\u0002H\u0002¢\u0006\u0002\b*\"\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00028F¢\u0006\u0006\u001a\u0004\b\u0003\u0010\u0004\"\u0015\u0010\u0005\u001a\u00020\u0001*\u00020\u00028F¢\u0006\u0006\u001a\u0004\b\u0006\u0010\u0004\"\u0015\u0010\u0007\u001a\u00020\u0001*\u00020\u00028F¢\u0006\u0006\u001a\u0004\b\b\u0010\u0004¨\u0006+"}, d2 = {"extension", "", "Ljava/io/File;", "getExtension", "(Ljava/io/File;)Ljava/lang/String;", "invariantSeparatorsPath", "getInvariantSeparatorsPath", "nameWithoutExtension", "getNameWithoutExtension", "createTempDir", "prefix", DynamicLink.Builder.KEY_SUFFIX, "directory", "createTempFile", "copyRecursively", "", "target", "overwrite", "onError", "Lkotlin/Function2;", "Ljava/io/IOException;", "Lkotlin/io/OnErrorAction;", "copyTo", "bufferSize", "", "deleteRecursively", "endsWith", "other", "normalize", "", "normalize$FilesKt__UtilsKt", "Lkotlin/io/FilePathComponents;", "relativeTo", "base", "relativeToOrNull", "relativeToOrSelf", "resolve", "relative", "resolveSibling", "startsWith", "toRelativeString", "toRelativeStringOrNull", "toRelativeStringOrNull$FilesKt__UtilsKt", "kotlin-stdlib"}, k = 5, mv = {1, 9, 0}, xi = 49, xs = "kotlin/io/FilesKt")
@SourceDebugExtension({"SMAP\nUtils.kt\nKotlin\n*S Kotlin\n*F\n+ 1 Utils.kt\nkotlin/io/FilesKt__UtilsKt\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n+ 3 _Sequences.kt\nkotlin/sequences/SequencesKt___SequencesKt\n*L\n1#1,473:1\n1#2:474\n1284#3,3:475\n*S KotlinDebug\n*F\n+ 1 Utils.kt\nkotlin/io/FilesKt__UtilsKt\n*L\n347#1:475,3\n*E\n"})
/* loaded from: classes3.dex */
public class FilesKt__UtilsKt extends FilesKt__FileTreeWalkKt {
public static final boolean copyRecursively(File file, File target, boolean z3, final Function2<? super File, ? super IOException, ? extends OnErrorAction> onError) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(target, "target");
Intrinsics.checkNotNullParameter(onError, "onError");
if (!file.exists()) {
return onError.invoke(file, new NoSuchFileException(file, null, "The source file doesn't exist.", 2, null)) != OnErrorAction.TERMINATE;
}
try {
Iterator<File> it = FilesKt__FileTreeWalkKt.walkTopDown(file).onFail(new Function2<File, IOException, Unit>() { // from class: kotlin.io.FilesKt__UtilsKt$copyRecursively$2
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
/* JADX WARN: Multi-variable type inference failed */
{
super(2);
}
@Override // kotlin.jvm.functions.Function2
public /* bridge */ /* synthetic */ Unit invoke(File file2, IOException iOException) {
invoke2(file2, iOException);
return Unit.INSTANCE;
}
/* renamed from: invoke, reason: avoid collision after fix types in other method */
public final void invoke2(File f2, IOException e4) {
Intrinsics.checkNotNullParameter(f2, "f");
Intrinsics.checkNotNullParameter(e4, "e");
if (onError.invoke(f2, e4) == OnErrorAction.TERMINATE) {
throw new TerminateException(f2);
}
}
}).iterator();
while (it.hasNext()) {
File next = it.next();
if (next.exists()) {
File file2 = new File(target, toRelativeString(next, file));
if (file2.exists() && (!next.isDirectory() || !file2.isDirectory())) {
if (z3) {
if (file2.isDirectory()) {
if (!deleteRecursively(file2)) {
}
} else if (!file2.delete()) {
}
}
if (onError.invoke(file2, new FileAlreadyExistsException(next, file2, "The destination file already exists.")) == OnErrorAction.TERMINATE) {
return false;
}
}
if (next.isDirectory()) {
file2.mkdirs();
} else {
boolean z4 = z3;
if (copyTo$default(next, file2, z4, 0, 4, null).length() != next.length() && onError.invoke(next, new IOException("Source file wasn't copied completely, length of destination file differs.")) == OnErrorAction.TERMINATE) {
return false;
}
z3 = z4;
}
} else if (onError.invoke(next, new NoSuchFileException(next, null, "The source file doesn't exist.", 2, null)) == OnErrorAction.TERMINATE) {
return false;
}
}
return true;
} catch (TerminateException unused) {
return false;
}
}
public static /* synthetic */ boolean copyRecursively$default(File file, File file2, boolean z3, Function2 function2, int i, Object obj) {
if ((i & 2) != 0) {
z3 = false;
}
if ((i & 4) != 0) {
function2 = new Function2() { // from class: kotlin.io.FilesKt__UtilsKt$copyRecursively$1
@Override // kotlin.jvm.functions.Function2
public final Void invoke(File file3, IOException exception) {
Intrinsics.checkNotNullParameter(file3, "<anonymous parameter 0>");
Intrinsics.checkNotNullParameter(exception, "exception");
throw exception;
}
};
}
return copyRecursively(file, file2, z3, function2);
}
public static final File copyTo(File file, File target, boolean z3, int i) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(target, "target");
if (!file.exists()) {
throw new NoSuchFileException(file, null, "The source file doesn't exist.", 2, null);
}
if (target.exists()) {
if (!z3) {
throw new FileAlreadyExistsException(file, target, "The destination file already exists.");
}
if (!target.delete()) {
throw new FileAlreadyExistsException(file, target, "Tried to overwrite the destination, but failed to delete it.");
}
}
if (file.isDirectory()) {
if (target.mkdirs()) {
return target;
}
throw new FileSystemException(file, target, "Failed to create target directory.");
}
File parentFile = target.getParentFile();
if (parentFile != null) {
parentFile.mkdirs();
}
FileInputStream fileInputStream = new FileInputStream(file);
try {
FileOutputStream fileOutputStream = new FileOutputStream(target);
try {
ByteStreamsKt.copyTo(fileInputStream, fileOutputStream, i);
CloseableKt.closeFinally(fileOutputStream, null);
CloseableKt.closeFinally(fileInputStream, null);
return target;
} finally {
}
} finally {
}
}
public static /* synthetic */ File copyTo$default(File file, File file2, boolean z3, int i, int i4, Object obj) {
if ((i4 & 2) != 0) {
z3 = false;
}
if ((i4 & 4) != 0) {
i = 8192;
}
return copyTo(file, file2, z3, i);
}
@Deprecated(message = "Avoid creating temporary directories in the default temp location with this function due to too wide permissions on the newly created directory. Use kotlin.io.path.createTempDirectory instead.")
public static final File createTempDir(String prefix, String str, File file) {
Intrinsics.checkNotNullParameter(prefix, "prefix");
File createTempFile = File.createTempFile(prefix, str, file);
createTempFile.delete();
if (createTempFile.mkdir()) {
Intrinsics.checkNotNull(createTempFile);
return createTempFile;
}
throw new IOException("Unable to create temporary directory " + createTempFile + '.');
}
public static /* synthetic */ File createTempDir$default(String str, String str2, File file, int i, Object obj) {
if ((i & 1) != 0) {
str = "tmp";
}
if ((i & 2) != 0) {
str2 = null;
}
if ((i & 4) != 0) {
file = null;
}
return createTempDir(str, str2, file);
}
@Deprecated(message = "Avoid creating temporary files in the default temp location with this function due to too wide permissions on the newly created file. Use kotlin.io.path.createTempFile instead or resort to java.io.File.createTempFile.")
public static final File createTempFile(String prefix, String str, File file) {
Intrinsics.checkNotNullParameter(prefix, "prefix");
File createTempFile = File.createTempFile(prefix, str, file);
Intrinsics.checkNotNullExpressionValue(createTempFile, "createTempFile(...)");
return createTempFile;
}
public static /* synthetic */ File createTempFile$default(String str, String str2, File file, int i, Object obj) {
if ((i & 1) != 0) {
str = "tmp";
}
if ((i & 2) != 0) {
str2 = null;
}
if ((i & 4) != 0) {
file = null;
}
return createTempFile(str, str2, file);
}
public static final boolean deleteRecursively(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
while (true) {
boolean z3 = true;
for (File file2 : FilesKt__FileTreeWalkKt.walkBottomUp(file)) {
if (file2.delete() || !file2.exists()) {
if (z3) {
break;
}
}
z3 = false;
}
return z3;
}
}
public static final boolean endsWith(File file, File other) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(other, "other");
FilePathComponents components = FilesKt__FilePathComponentsKt.toComponents(file);
FilePathComponents components2 = FilesKt__FilePathComponentsKt.toComponents(other);
if (components2.isRooted()) {
return Intrinsics.areEqual(file, other);
}
int size = components.getSize() - components2.getSize();
if (size < 0) {
return false;
}
return components.getSegments().subList(size, components.getSize()).equals(components2.getSegments());
}
public static String getExtension(File file) {
String substringAfterLast;
Intrinsics.checkNotNullParameter(file, "<this>");
String name = file.getName();
Intrinsics.checkNotNullExpressionValue(name, "getName(...)");
substringAfterLast = StringsKt__StringsKt.substringAfterLast(name, '.', "");
return substringAfterLast;
}
public static final String getInvariantSeparatorsPath(File file) {
String replace$default;
Intrinsics.checkNotNullParameter(file, "<this>");
char c4 = File.separatorChar;
String path = file.getPath();
Intrinsics.checkNotNullExpressionValue(path, "getPath(...)");
if (c4 == '/') {
return path;
}
replace$default = StringsKt__StringsJVMKt.replace$default(path, c4, '/', false, 4, (Object) null);
return replace$default;
}
public static final String getNameWithoutExtension(File file) {
String substringBeforeLast$default;
Intrinsics.checkNotNullParameter(file, "<this>");
String name = file.getName();
Intrinsics.checkNotNullExpressionValue(name, "getName(...)");
substringBeforeLast$default = StringsKt__StringsKt.substringBeforeLast$default(name, ".", (String) null, 2, (Object) null);
return substringBeforeLast$default;
}
public static final File normalize(File file) {
String joinToString$default;
Intrinsics.checkNotNullParameter(file, "<this>");
FilePathComponents components = FilesKt__FilePathComponentsKt.toComponents(file);
File root = components.getRoot();
List<File> normalize$FilesKt__UtilsKt = normalize$FilesKt__UtilsKt(components.getSegments());
String separator = File.separator;
Intrinsics.checkNotNullExpressionValue(separator, "separator");
joinToString$default = CollectionsKt___CollectionsKt.joinToString$default(normalize$FilesKt__UtilsKt, separator, null, null, 0, null, null, 62, null);
return resolve(root, joinToString$default);
}
private static final FilePathComponents normalize$FilesKt__UtilsKt(FilePathComponents filePathComponents) {
return new FilePathComponents(filePathComponents.getRoot(), normalize$FilesKt__UtilsKt(filePathComponents.getSegments()));
}
public static final File relativeTo(File file, File base) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(base, "base");
return new File(toRelativeString(file, base));
}
public static final File relativeToOrNull(File file, File base) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(base, "base");
String relativeStringOrNull$FilesKt__UtilsKt = toRelativeStringOrNull$FilesKt__UtilsKt(file, base);
if (relativeStringOrNull$FilesKt__UtilsKt != null) {
return new File(relativeStringOrNull$FilesKt__UtilsKt);
}
return null;
}
public static final File relativeToOrSelf(File file, File base) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(base, "base");
String relativeStringOrNull$FilesKt__UtilsKt = toRelativeStringOrNull$FilesKt__UtilsKt(file, base);
return relativeStringOrNull$FilesKt__UtilsKt != null ? new File(relativeStringOrNull$FilesKt__UtilsKt) : file;
}
public static final File resolve(File file, File relative) {
boolean endsWith$default;
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(relative, "relative");
if (FilesKt__FilePathComponentsKt.isRooted(relative)) {
return relative;
}
String file2 = file.toString();
Intrinsics.checkNotNullExpressionValue(file2, "toString(...)");
if (file2.length() != 0) {
char c4 = File.separatorChar;
endsWith$default = StringsKt__StringsKt.endsWith$default((CharSequence) file2, c4, false, 2, (Object) null);
if (!endsWith$default) {
return new File(file2 + c4 + relative);
}
}
return new File(file2 + relative);
}
public static final File resolveSibling(File file, File relative) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(relative, "relative");
FilePathComponents components = FilesKt__FilePathComponentsKt.toComponents(file);
return resolve(resolve(components.getRoot(), components.getSize() == 0 ? new File("..") : components.subPath(0, components.getSize() - 1)), relative);
}
public static final boolean startsWith(File file, File other) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(other, "other");
FilePathComponents components = FilesKt__FilePathComponentsKt.toComponents(file);
FilePathComponents components2 = FilesKt__FilePathComponentsKt.toComponents(other);
if (Intrinsics.areEqual(components.getRoot(), components2.getRoot()) && components.getSize() >= components2.getSize()) {
return components.getSegments().subList(0, components2.getSize()).equals(components2.getSegments());
}
return false;
}
public static final String toRelativeString(File file, File base) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(base, "base");
String relativeStringOrNull$FilesKt__UtilsKt = toRelativeStringOrNull$FilesKt__UtilsKt(file, base);
if (relativeStringOrNull$FilesKt__UtilsKt != null) {
return relativeStringOrNull$FilesKt__UtilsKt;
}
throw new IllegalArgumentException("this and base files have different roots: " + file + " and " + base + '.');
}
private static final String toRelativeStringOrNull$FilesKt__UtilsKt(File file, File file2) {
FilePathComponents normalize$FilesKt__UtilsKt = normalize$FilesKt__UtilsKt(FilesKt__FilePathComponentsKt.toComponents(file));
FilePathComponents normalize$FilesKt__UtilsKt2 = normalize$FilesKt__UtilsKt(FilesKt__FilePathComponentsKt.toComponents(file2));
if (!Intrinsics.areEqual(normalize$FilesKt__UtilsKt.getRoot(), normalize$FilesKt__UtilsKt2.getRoot())) {
return null;
}
int size = normalize$FilesKt__UtilsKt2.getSize();
int size2 = normalize$FilesKt__UtilsKt.getSize();
int min = Math.min(size2, size);
int i = 0;
while (i < min && Intrinsics.areEqual(normalize$FilesKt__UtilsKt.getSegments().get(i), normalize$FilesKt__UtilsKt2.getSegments().get(i))) {
i++;
}
StringBuilder sb = new StringBuilder();
int i4 = size - 1;
if (i <= i4) {
while (!Intrinsics.areEqual(normalize$FilesKt__UtilsKt2.getSegments().get(i4).getName(), "..")) {
sb.append("..");
if (i4 != i) {
sb.append(File.separatorChar);
}
if (i4 != i) {
i4--;
}
}
return null;
}
if (i < size2) {
if (i < size) {
sb.append(File.separatorChar);
}
List drop = CollectionsKt.drop(normalize$FilesKt__UtilsKt.getSegments(), i);
String separator = File.separator;
Intrinsics.checkNotNullExpressionValue(separator, "separator");
CollectionsKt___CollectionsKt.joinTo$default(drop, sb, separator, null, null, 0, null, null, 124, null);
}
return sb.toString();
}
private static final List<File> normalize$FilesKt__UtilsKt(List<? extends File> list) {
ArrayList arrayList = new ArrayList(list.size());
for (File file : list) {
String name = file.getName();
if (!Intrinsics.areEqual(name, ".")) {
if (Intrinsics.areEqual(name, "..")) {
if (arrayList.isEmpty() || Intrinsics.areEqual(((File) CollectionsKt.last((List) arrayList)).getName(), "..")) {
arrayList.add(file);
} else {
arrayList.remove(arrayList.size() - 1);
}
} else {
arrayList.add(file);
}
}
}
return arrayList;
}
public static File resolve(File file, String relative) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(relative, "relative");
return resolve(file, new File(relative));
}
public static final File resolveSibling(File file, String relative) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(relative, "relative");
return resolveSibling(file, new File(relative));
}
public static final boolean startsWith(File file, String other) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(other, "other");
return startsWith(file, new File(other));
}
public static final boolean endsWith(File file, String other) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(other, "other");
return endsWith(file, new File(other));
}
}