原文: https://www.programiz.com/kotlin-programming/examples/convert-file-byte-array
在此程序中,您将学习在 Kotlin 中将File
对象转换为byte[]
,反之亦然。
在将文件转换为字节数组之前,反之亦然,我们假设在src
文件夹中有一个名为test.txt
的文件。
这是test.txt
的内容
This is a
Test file.
示例 1:将文件转换为byte[]
import java.io.IOException
import java.nio.file.Files
import java.nio.file.Paths
import java.util.Arrays
fun main(args: Array<String>) {
val path = System.getProperty("user.dir") + "\\src\\test.txt"
try {
val encoded = Files.readAllBytes(Paths.get(path))
println(Arrays.toString(encoded))
} catch (e: IOException) {
}
}
运行该程序时,输出为:
[84, 104, 105, 115, 32, 105, 115, 32, 97, 13, 10, 84, 101, 115, 116, 32, 102, 105, 108, 101, 46]
在上面的程序中,我们将文件的路径存储在变量path
中。
然后,在try
块内部,我们使用readAllBytes()
方法从给定的pth
读取所有字节。
然后,我们使用Arrays
的toString()
方法来打印字节数组。
由于readAllBytes()
可能会抛出IOException
,因此我们在程序中使用了try-catch
块。
示例 2:将byte[]
转换为文件
import java.io.IOException
import java.nio.file.Files
import java.nio.file.Paths
fun main(args: Array<String>) {
val path = System.getProperty("user.dir") + "\\src\\test.txt"
val finalPath = System.getProperty("user.dir") + "\\src\\final.txt"
try {
val encoded = Files.readAllBytes(Paths.get(path))
Files.write(Paths.get(finalPath), encoded)
} catch (e: IOException) {
}
}
运行程序时,test.txt
的内容将复制到final.txt
中。
在上面的程序中,我们使用了与示例 1 相同的方法从存储在path
中的文件中读取所有字节。 这些字节存储在encoded
数组中。
我们还有一个finalPath
,其中要写入字节。
然后,我们仅使用Files
的write()
方法将编码的字节数组写入给定finalPath
中的文件中。
以下是等效的 Java 代码: Java 程序:将File
转换为byte[]
,反之亦然。