java FileChannel用MappedByteBuffer 读写文件 代码分开
时间: 2024-04-13 13:28:12 浏览: 149
好的,我可以为您提供一个示例代码,将Java的FileChannel和MappedByteBuffer用于读写文件,并将读和写的代码分开。请参考以下示例:
首先,我们来看一下读取文件的代码:
```java
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
public class FileReader {
public static void main(String[] args) {
try {
// 打开文件
RandomAccessFile file = new RandomAccessFile("input.txt", "r");
FileChannel channel = file.getChannel();
// 将文件映射到内存中
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
// 读取文件内容
while (buffer.hasRemaining()) {
System.out.print((char) buffer.get());
}
// 关闭文件
channel.close();
file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
接下来,我们来看一下写入文件的代码:
```java
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
public class FileWriter {
public static void main(String[] args) {
try {
// 打开文件
RandomAccessFile file = new RandomAccessFile("output.txt", "rw");
FileChannel channel = file.getChannel();
// 将文件映射到内存中
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
// 写入数据到缓冲区
String data = "Hello, World!";
buffer.put(data.getBytes());
// 刷新缓冲区到文件
buffer.force();
// 关闭文件
channel.close();
file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这两个示例代码分别用于读取和写入文件。您可以根据自己的需求进行修改和扩展。记得替换文件名和路径以适应您的实际情况。希望对您有所帮助!
阅读全文