【问题标题】:Merge multiple files to one Kotlin extension function将多个文件合并为一个 Kotlin 扩展函数
【发布时间】:2022-01-13 15:31:17
【问题描述】:

在我的 Android 应用程序中,我有一种机制,我可以下载许多小部分的文件并将它们合并为一个。 所以现在我已经下载了存储在文件夹 Download/file_name 下的 LocalStorage 中的部分。因此,该文件夹内部(假设)有 30 个文件,这些文件由它们创建为段的序列命名 (1,2,4,6,3,10,15,7,9,12,8....30)

我想合并这些文件并将它们附加到一个文件中,并且我想按正确的顺序编写它们。 先是 1,后是 2,后是 3,依此类推……

是否有一个优雅的 Kotlin 扩展函数可以完成这样的工作?

【问题讨论】:

  • 这是一个非常具体的任务序列。你在哪个部分苦苦挣扎?由于您标记了 KTX,我不知道您是否要求在库中提供预先存在的解决方案。 KTX 库中不可能有这样一个特定的任务。
  • 我想我想要一个像 copyTo 这样的函数,但要对现有文件进行某种附加

标签: android file kotlin kotlin-android-extensions


【解决方案1】:

我认为标准库中并不完全存在。你可以使用这样的东西:

fun File.appendAll(bufferSize: Int = 4096, vararg files: File) {
    if (!exists()) {
        throw NoSuchFileException(this, null, "File doesn't exist.")
    }
    require(!isDirectory) { "The file is a directory." }
    FileOutputStream(this, true).use { output ->
        for (file in files) {
            if (file.isDirectory || !file.exists()) {
                continue // Might want to log or throw
            }
            file.forEachBlock(bufferSize) { buffer, bytesRead -> output.write(buffer, 0, bytesRead) }
        }
    }
}

首先,您需要创建一个空文件,然后将所有这些其他文件附加到该文件中。

【讨论】:

  • 这看起来很不错。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
  • 2013-04-13
相关资源
最近更新 更多