# Kotlin 程序：将文件转换为字节数组，反之亦然

> 原文： [https://www.programiz.com/kotlin-programming/examples/convert-file-byte-array](https://www.programiz.com/kotlin-programming/examples/convert-file-byte-array)

#### 在此程序中，您将学习在 Kotlin 中将`File`对象转换为`byte[]`，反之亦然。

在将文件转换为字节数组之前，反之亦然，我们假设在`src`文件夹中有一个名为`test.txt`的文件。

这是`test.txt`的内容

```kt
This is a
Test file.
```

## 示例 1：将文件转换为`byte[]`

```kt
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) {

    }
}
```

运行该程序时，输出为：

```kt
[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[]`转换为文件

```kt
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[]`，反之亦然](/java-programming/examples/convert-file-byte-array "Java program to convert File to byte[] and vice-versa")。