discord-jadx/app/src/main/java/androidx/documentfile/provider/RawDocumentFile.java

156 lines
4.7 KiB
Java

package androidx.documentfile.provider;
import android.net.Uri;
import android.util.Log;
import android.webkit.MimeTypeMap;
import androidx.annotation.Nullable;
import c.d.b.a.a;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class RawDocumentFile extends DocumentFile {
private File mFile;
public RawDocumentFile(@Nullable DocumentFile documentFile, File file) {
super(documentFile);
this.mFile = file;
}
private static boolean deleteContents(File file) {
File[] listFiles = file.listFiles();
boolean z2 = true;
if (listFiles != null) {
for (File file2 : listFiles) {
if (file2.isDirectory()) {
z2 &= deleteContents(file2);
}
if (!file2.delete()) {
Log.w("DocumentFile", "Failed to delete " + file2);
z2 = false;
}
}
}
return z2;
}
private static String getTypeForName(String str) {
String mimeTypeFromExtension;
int lastIndexOf = str.lastIndexOf(46);
return (lastIndexOf < 0 || (mimeTypeFromExtension = MimeTypeMap.getSingleton().getMimeTypeFromExtension(str.substring(lastIndexOf + 1).toLowerCase())) == null) ? "application/octet-stream" : mimeTypeFromExtension;
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean canRead() {
return this.mFile.canRead();
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean canWrite() {
return this.mFile.canWrite();
}
@Override // androidx.documentfile.provider.DocumentFile
@Nullable
public DocumentFile createDirectory(String str) {
File file = new File(this.mFile, str);
if (file.isDirectory() || file.mkdir()) {
return new RawDocumentFile(this, file);
}
return null;
}
@Override // androidx.documentfile.provider.DocumentFile
@Nullable
public DocumentFile createFile(String str, String str2) {
String extensionFromMimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType(str);
if (extensionFromMimeType != null) {
str2 = a.u(str2, ".", extensionFromMimeType);
}
File file = new File(this.mFile, str2);
try {
file.createNewFile();
return new RawDocumentFile(this, file);
} catch (IOException e) {
Log.w("DocumentFile", "Failed to createFile: " + e);
return null;
}
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean delete() {
deleteContents(this.mFile);
return this.mFile.delete();
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean exists() {
return this.mFile.exists();
}
@Override // androidx.documentfile.provider.DocumentFile
public String getName() {
return this.mFile.getName();
}
@Override // androidx.documentfile.provider.DocumentFile
@Nullable
public String getType() {
if (this.mFile.isDirectory()) {
return null;
}
return getTypeForName(this.mFile.getName());
}
@Override // androidx.documentfile.provider.DocumentFile
public Uri getUri() {
return Uri.fromFile(this.mFile);
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean isDirectory() {
return this.mFile.isDirectory();
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean isFile() {
return this.mFile.isFile();
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean isVirtual() {
return false;
}
@Override // androidx.documentfile.provider.DocumentFile
public long lastModified() {
return this.mFile.lastModified();
}
@Override // androidx.documentfile.provider.DocumentFile
public long length() {
return this.mFile.length();
}
@Override // androidx.documentfile.provider.DocumentFile
public DocumentFile[] listFiles() {
ArrayList arrayList = new ArrayList();
File[] listFiles = this.mFile.listFiles();
if (listFiles != null) {
for (File file : listFiles) {
arrayList.add(new RawDocumentFile(this, file));
}
}
return (DocumentFile[]) arrayList.toArray(new DocumentFile[arrayList.size()]);
}
@Override // androidx.documentfile.provider.DocumentFile
public boolean renameTo(String str) {
File file = new File(this.mFile.getParentFile(), str);
if (!this.mFile.renameTo(file)) {
return false;
}
this.mFile = file;
return true;
}
}