将 raw 资源复制为临时文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.io.*

fun copyRawToCache(context: Context, @RawRes rawId: Int, fileName: String): File? {
val cacheFile = File(context.cacheDir, fileName)
if (cacheFile.exists()) {
// 可选:避免重复复制(注意更新策略)
return cacheFile
}

return try {
context.resources.openRawResource(rawId).use { input ->
cacheFile.outputStream().use { output ->
input.copyTo(output)
}
}
cacheFile
} catch (e: IOException) {
e.printStackTrace()
null
}
}