Rabbit-R1/android (non root)/java/sources/kotlin/io/FilesKt__UtilsKt.java
2024-05-21 17:08:36 -04:00

412 lines
22 KiB
Java

package kotlin.io;
import androidx.constraintlayout.widget.ConstraintLayout;
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.jvm.functions.Function2;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.StringsKt;
/* JADX INFO: Access modifiers changed from: package-private */
/* compiled from: Utils.kt */
@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", "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 = ConstraintLayout.LayoutParams.Table.LAYOUT_EDITOR_ABSOLUTEX, xs = "kotlin/io/FilesKt")
/* loaded from: classes3.dex */
public class FilesKt__UtilsKt extends FilesKt__FileTreeWalkKt {
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 FilesKt.createTempDir(str, str2, file);
}
@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 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 FilesKt.createTempFile(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 final String getExtension(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
String name = file.getName();
Intrinsics.checkNotNullExpressionValue(name, "getName(...)");
return StringsKt.substringAfterLast(name, '.', "");
}
public static final String getInvariantSeparatorsPath(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
if (File.separatorChar != '/') {
String path = file.getPath();
Intrinsics.checkNotNullExpressionValue(path, "getPath(...)");
return StringsKt.replace$default(path, File.separatorChar, '/', false, 4, (Object) null);
}
String path2 = file.getPath();
Intrinsics.checkNotNullExpressionValue(path2, "getPath(...)");
return path2;
}
public static final String getNameWithoutExtension(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
String name = file.getName();
Intrinsics.checkNotNullExpressionValue(name, "getName(...)");
return StringsKt.substringBeforeLast$default(name, ".", (String) null, 2, (Object) null);
}
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 + '.');
}
public static final File relativeTo(File file, File base) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(base, "base");
return new File(FilesKt.toRelativeString(file, base));
}
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 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;
}
private static final String toRelativeStringOrNull$FilesKt__UtilsKt(File file, File file2) {
FilePathComponents normalize$FilesKt__UtilsKt = normalize$FilesKt__UtilsKt(FilesKt.toComponents(file));
FilePathComponents normalize$FilesKt__UtilsKt2 = normalize$FilesKt__UtilsKt(FilesKt.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 i2 = size - 1;
if (i <= i2) {
while (!Intrinsics.areEqual(normalize$FilesKt__UtilsKt2.getSegments().get(i2).getName(), "..")) {
sb.append("..");
if (i2 != i) {
sb.append(File.separatorChar);
}
if (i2 != i) {
i2--;
}
}
return null;
}
if (i < size2) {
if (i < size) {
sb.append(File.separatorChar);
}
String separator = File.separator;
Intrinsics.checkNotNullExpressionValue(separator, "separator");
CollectionsKt.joinTo(CollectionsKt.drop(normalize$FilesKt__UtilsKt.getSegments(), i), sb, (r14 & 2) != 0 ? ", " : separator, (r14 & 4) != 0 ? "" : null, (r14 & 8) != 0 ? "" : null, (r14 & 16) != 0 ? -1 : 0, (r14 & 32) != 0 ? "..." : null, (r14 & 64) != 0 ? null : null);
}
return sb.toString();
}
public static /* synthetic */ File copyTo$default(File file, File file2, boolean z, int i, int i2, Object obj) {
if ((i2 & 2) != 0) {
z = false;
}
if ((i2 & 4) != 0) {
i = 8192;
}
return FilesKt.copyTo(file, file2, z, i);
}
public static final File copyTo(File file, File target, boolean z, 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 (!z) {
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()) {
throw new FileSystemException(file, target, "Failed to create target directory.");
}
} else {
File parentFile = target.getParentFile();
if (parentFile != null) {
parentFile.mkdirs();
}
FileOutputStream fileInputStream = new FileInputStream(file);
try {
FileInputStream fileInputStream2 = fileInputStream;
fileInputStream = new FileOutputStream(target);
try {
ByteStreamsKt.copyTo(fileInputStream2, fileInputStream, i);
CloseableKt.closeFinally(fileInputStream, null);
CloseableKt.closeFinally(fileInputStream, null);
} finally {
}
} finally {
}
}
return target;
}
public static /* synthetic */ boolean copyRecursively$default(File file, File file2, boolean z, Function2 function2, int i, Object obj) {
if ((i & 2) != 0) {
z = 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 FilesKt.copyRecursively(file, file2, z, function2);
}
public static final boolean copyRecursively(File file, File target, boolean z, 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.walkTopDown(file).onFail(new Function2<File, IOException, Unit>() { // from class: kotlin.io.FilesKt__UtilsKt$copyRecursively$2
/* JADX INFO: Access modifiers changed from: package-private */
/* 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 f, IOException e) {
Intrinsics.checkNotNullParameter(f, "f");
Intrinsics.checkNotNullParameter(e, "e");
if (onError.invoke(f, e) == OnErrorAction.TERMINATE) {
throw new TerminateException(f);
}
}
}).iterator();
while (it.hasNext()) {
File next = it.next();
if (!next.exists()) {
if (onError.invoke(next, new NoSuchFileException(next, null, "The source file doesn't exist.", 2, null)) == OnErrorAction.TERMINATE) {
return false;
}
} else {
File file2 = new File(target, FilesKt.toRelativeString(next, file));
if (file2.exists() && (!next.isDirectory() || !file2.isDirectory())) {
if (z) {
if (file2.isDirectory()) {
if (!FilesKt.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 if (FilesKt.copyTo$default(next, file2, z, 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;
}
}
}
return true;
} catch (TerminateException unused) {
return false;
}
}
public static final boolean deleteRecursively(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
while (true) {
boolean z = true;
for (File file2 : FilesKt.walkBottomUp(file)) {
if (file2.delete() || !file2.exists()) {
if (z) {
break;
}
}
z = false;
}
return z;
}
}
public static final boolean startsWith(File file, File other) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(other, "other");
FilePathComponents components = FilesKt.toComponents(file);
FilePathComponents components2 = FilesKt.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 boolean startsWith(File file, String other) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(other, "other");
return FilesKt.startsWith(file, new File(other));
}
public static final boolean endsWith(File file, File other) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(other, "other");
FilePathComponents components = FilesKt.toComponents(file);
FilePathComponents components2 = FilesKt.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 final boolean endsWith(File file, String other) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(other, "other");
return FilesKt.endsWith(file, new File(other));
}
public static final File normalize(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
FilePathComponents components = FilesKt.toComponents(file);
File root = components.getRoot();
List<File> normalize$FilesKt__UtilsKt = normalize$FilesKt__UtilsKt(components.getSegments());
String separator = File.separator;
Intrinsics.checkNotNullExpressionValue(separator, "separator");
return FilesKt.resolve(root, CollectionsKt.joinToString$default(normalize$FilesKt__UtilsKt, separator, null, null, 0, null, null, 62, null));
}
private static final FilePathComponents normalize$FilesKt__UtilsKt(FilePathComponents filePathComponents) {
return new FilePathComponents(filePathComponents.getRoot(), normalize$FilesKt__UtilsKt(filePathComponents.getSegments()));
}
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, "..")) {
arrayList.add(file);
} else if (arrayList.isEmpty() || Intrinsics.areEqual(((File) CollectionsKt.last((List) arrayList)).getName(), "..")) {
arrayList.add(file);
} else {
arrayList.remove(arrayList.size() - 1);
}
}
}
return arrayList;
}
public static final File resolve(File file, File relative) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(relative, "relative");
if (FilesKt.isRooted(relative)) {
return relative;
}
String file2 = file.toString();
Intrinsics.checkNotNullExpressionValue(file2, "toString(...)");
String str = file2;
return (str.length() == 0 || StringsKt.endsWith$default((CharSequence) str, File.separatorChar, false, 2, (Object) null)) ? new File(file2 + relative) : new File(file2 + File.separatorChar + relative);
}
public static final File resolve(File file, String relative) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(relative, "relative");
return FilesKt.resolve(file, new File(relative));
}
public static final File resolveSibling(File file, File relative) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(relative, "relative");
FilePathComponents components = FilesKt.toComponents(file);
return FilesKt.resolve(FilesKt.resolve(components.getRoot(), components.getSize() == 0 ? new File("..") : components.subPath(0, components.getSize() - 1)), relative);
}
public static final File resolveSibling(File file, String relative) {
Intrinsics.checkNotNullParameter(file, "<this>");
Intrinsics.checkNotNullParameter(relative, "relative");
return FilesKt.resolveSibling(file, new File(relative));
}
}