mirror of
https://github.com/amir1376/ab-download-manager.git
synced 2025-02-20 11:43:24 +08:00
add open folder to file utils
This commit is contained in:
parent
a093ab917f
commit
ebb2ad3032
@ -6,6 +6,7 @@ import java.io.File
|
||||
interface FileUtils {
|
||||
fun openFile(file: File): Boolean
|
||||
fun openFolderOfFile(file: File): Boolean
|
||||
fun openFolder(folder: File): Boolean
|
||||
fun canWriteInThisFolder(folder: String): Boolean
|
||||
|
||||
companion object : FileUtils by getPlatformFileUtil()
|
||||
|
@ -5,15 +5,21 @@ import java.io.FileNotFoundException
|
||||
|
||||
abstract class FileUtilsBase : FileUtils {
|
||||
override fun openFile(file: File): Boolean {
|
||||
if (!file.exists()) {
|
||||
throw FileNotFoundException("$file not found")
|
||||
}
|
||||
return openFileInternal(file)
|
||||
return openFileInternal(
|
||||
file = preparedFile(file)
|
||||
)
|
||||
}
|
||||
|
||||
override fun openFolderOfFile(file: File): Boolean {
|
||||
val file = file.canonicalFile.absoluteFile
|
||||
return openFolderOfFileInternal(file)
|
||||
return openFolderOfFileInternal(
|
||||
file = preparedFile(file)
|
||||
)
|
||||
}
|
||||
|
||||
override fun openFolder(folder: File): Boolean {
|
||||
return openFolderInternal(
|
||||
folder = preparedFile(folder)
|
||||
)
|
||||
}
|
||||
|
||||
override fun canWriteInThisFolder(folder: String): Boolean {
|
||||
@ -34,6 +40,15 @@ abstract class FileUtilsBase : FileUtils {
|
||||
return false
|
||||
}
|
||||
|
||||
private fun preparedFile(file: File): File {
|
||||
val file = file.canonicalFile.absoluteFile
|
||||
if (!file.exists()) {
|
||||
throw FileNotFoundException("$file not found")
|
||||
}
|
||||
return file
|
||||
}
|
||||
|
||||
protected abstract fun openFileInternal(file: File): Boolean
|
||||
protected abstract fun openFolderOfFileInternal(file: File): Boolean
|
||||
protected abstract fun openFolderInternal(folder: File): Boolean
|
||||
}
|
@ -22,4 +22,12 @@ internal class JVMFileUtils : FileUtilsBase() {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override fun openFolderInternal(folder: File): Boolean {
|
||||
kotlin.runCatching {
|
||||
Desktop.getDesktop().open(folder)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
@ -28,4 +28,7 @@ internal class LinuxFileUtils : FileUtilsBase() {
|
||||
return xdgOpenResult
|
||||
}
|
||||
|
||||
override fun openFolderInternal(folder: File): Boolean {
|
||||
return execAndWait(arrayOf("xdg-open", folder.parent))
|
||||
}
|
||||
}
|
@ -10,4 +10,9 @@ internal class MacOsFileUtils : FileUtilsBase() {
|
||||
override fun openFolderOfFileInternal(file: File): Boolean {
|
||||
return execAndWait(arrayOf("open", "-R", file.path))
|
||||
}
|
||||
|
||||
override fun openFolderInternal(folder: File): Boolean {
|
||||
return execAndWait(arrayOf("open", folder.path))
|
||||
}
|
||||
|
||||
}
|
@ -10,4 +10,8 @@ internal class WindowsFileUtils : FileUtilsBase() {
|
||||
override fun openFolderOfFileInternal(file: File): Boolean {
|
||||
return execAndWait(arrayOf("cmd", "/c", "explorer.exe", "/select,", file.path))
|
||||
}
|
||||
|
||||
override fun openFolderInternal(folder: File): Boolean {
|
||||
return execAndWait(arrayOf("cmd", "/c", "explorer.exe", folder.path))
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user