ADD week 5
This commit is contained in:
		| @@ -0,0 +1,155 @@ | ||||
| package androidx.documentfile.provider; | ||||
|  | ||||
| import android.net.Uri; | ||||
| import android.util.Log; | ||||
| import android.webkit.MimeTypeMap; | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class RawDocumentFile extends DocumentFile { | ||||
|     private File mFile; | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public boolean isVirtual() { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     RawDocumentFile(DocumentFile documentFile, File file) { | ||||
|         super(documentFile); | ||||
|         this.mFile = file; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public DocumentFile createFile(String str, String str2) { | ||||
|         String extensionFromMimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType(str); | ||||
|         if (extensionFromMimeType != null) { | ||||
|             str2 = 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 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 | ||||
|     public Uri getUri() { | ||||
|         return Uri.fromFile(this.mFile); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public String getName() { | ||||
|         return this.mFile.getName(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public String getType() { | ||||
|         if (this.mFile.isDirectory()) { | ||||
|             return null; | ||||
|         } | ||||
|         return getTypeForName(this.mFile.getName()); | ||||
|     } | ||||
|  | ||||
|     @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 long lastModified() { | ||||
|         return this.mFile.lastModified(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.documentfile.provider.DocumentFile | ||||
|     public long length() { | ||||
|         return this.mFile.length(); | ||||
|     } | ||||
|  | ||||
|     @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 | ||||
|     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 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; | ||||
|     } | ||||
|  | ||||
|     private static String getTypeForName(String str) { | ||||
|         int lastIndexOf = str.lastIndexOf(46); | ||||
|         if (lastIndexOf < 0) { | ||||
|             return "application/octet-stream"; | ||||
|         } | ||||
|         String mimeTypeFromExtension = MimeTypeMap.getSingleton().getMimeTypeFromExtension(str.substring(lastIndexOf + 1).toLowerCase()); | ||||
|         return mimeTypeFromExtension != null ? mimeTypeFromExtension : "application/octet-stream"; | ||||
|     } | ||||
|  | ||||
|     private static boolean deleteContents(File file) { | ||||
|         File[] listFiles = file.listFiles(); | ||||
|         boolean z = true; | ||||
|         if (listFiles != null) { | ||||
|             for (File file2 : listFiles) { | ||||
|                 if (file2.isDirectory()) { | ||||
|                     z &= deleteContents(file2); | ||||
|                 } | ||||
|                 if (!file2.delete()) { | ||||
|                     Log.w("DocumentFile", "Failed to delete " + file2); | ||||
|                     z = false; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return z; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user