From f4b3b65ab8def9dc4128a350a980afa483c97257 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Mon, 15 Jul 2024 01:00:15 +0200 Subject: Add Utils#createFileAndDirectories Useful when creating a file in a directory with a path. --- .../main/java/org/the_jk/cleversync/io/Utils.kt | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'app/src/main/java/org/the_jk/cleversync') diff --git a/app/src/main/java/org/the_jk/cleversync/io/Utils.kt b/app/src/main/java/org/the_jk/cleversync/io/Utils.kt index 0f9a2b7..6593d04 100644 --- a/app/src/main/java/org/the_jk/cleversync/io/Utils.kt +++ b/app/src/main/java/org/the_jk/cleversync/io/Utils.kt @@ -13,6 +13,11 @@ object Utils { return current } + fun createFileAndDirectories(directory: ModifiableDirectory, vararg names: String): ModifiableFile { + val (dirNames, fileName) = resolve(*names) + return makeDirectories(directory, *dirNames).createFile(fileName) + } + fun openDirectory(directory: Directory, vararg names: String): Directory? { var current = directory names.forEach { nameWithSlashes -> @@ -22,4 +27,24 @@ object Utils { } return current } + + fun openFile(directory: Directory, vararg names: String): File? { + val (dirNames, fileName) = resolve(*names) + return openDirectory(directory, *dirNames)?.openFile(fileName) + } + + fun resolve(vararg names: String): Pair, String> { + val out = buildList { + names.forEach { nameWithSlashes -> + StringUtils.split(nameWithSlashes, '/', keepEmpty = false) + .forEach { name -> + add(name) + } + } + } + return if (out.isEmpty()) { emptyArray() to "" } else { + val last = out.last() + out.dropLast(1).toTypedArray() to last + } + } } -- cgit v1.2.3-70-g09d2