用java封装NIO的读写文件方法
时间: 2023-12-26 09:53:17 浏览: 145
以下是一个使用Java NIO库封装读写文件的方法:
```java
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class FileUtils {
private FileUtils() {}
public static byte[] readFile(String filePath) throws IOException {
Path path = Paths.get(filePath);
try (FileChannel fileChannel = FileChannel.open(path, StandardOpenOption.READ)) {
ByteBuffer buffer = ByteBuffer.allocate((int) fileChannel.size());
fileChannel.read(buffer);
return buffer.array();
}
}
public static void writeFile(String filePath, byte[] data) throws IOException {
Path path = Paths.get(filePath);
try (FileChannel fileChannel = FileChannel.open(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
ByteBuffer buffer = ByteBuffer.wrap(data);
fileChannel.write(buffer);
}
}
}
```
上面的 `FileUtils` 类有两个静态方法,分别是 `readFile` 和 `writeFile`。`readFile` 方法接收一个文件路径并返回该文件的内容,`writeFile` 方法接收一个文件路径和一个字节数组并将字节数组的内容写入到该文件中。
这两个方法都使用了 Java NIO 的 `FileChannel` 类来读写文件。在 `readFile` 方法中,我们首先打开一个文件通道并读取整个文件内容到一个缓冲区中。然后,我们将缓冲区中的内容转换为字节数组并返回它。在 `writeFile` 方法中,我们首先打开一个文件通道并将字节数组包装到一个缓冲区中。然后,我们将缓冲区中的内容写入到文件中。注意,我们在打开文件通道时使用了 `StandardOpenOption.CREATE` 和 `StandardOpenOption.WRITE` 这两个选项来确保文件存在并可写。
使用这两个方法的示例代码如下:
```java
public static void main(String[] args) throws IOException {
String filePath = "/path/to/file.txt";
String text = "Hello, world!";
FileUtils.writeFile(filePath, text.getBytes());
byte[] data = FileUtils.readFile(filePath);
String content = new String(data);
System.out.println(content); // "Hello, world!"
}
```
阅读全文