FileChannel を使用してファイルをネイティブに読み込む方法
FileChannelを使用してファイルをリードする手順は次のとおりです。
- ファイル入力ストリーム
- ランダムアクセスファイル
FileChannel channel = FileChannel.open(Paths.get("文件路径"), StandardOpenOption.READ);
- 読み込まれるデータを受け取る `ByteBuffer` オブジェクトを作成します。サンプルコードを次に示します。
ByteBuffer buffer = ByteBuffer.allocate(1024);
- 読み取り()
int bytesRead = channel.read(buffer);
- データがファイルの末尾検出されるまで繰り返し読み取る。以下に例を示す:
while (bytesRead != -1) {
buffer.flip(); // 切换为读模式
while (buffer.hasRemaining()) {
System.out.print((char) buffer.get()); // 读取一个字节数据
}
buffer.clear(); // 切换为写模式,继续读取数据
bytesRead = channel.read(buffer);
}
- Channel ファイルをクローズします。サンプル コードを次に示します。
channel.close();
以下に完全なサンプルコードを示します。
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class FileChannelExample {
public static void main(String[] args) {
try {
FileChannel channel = FileChannel.open(Paths.get("文件路径"), StandardOpenOption.READ);
ByteBuffer buffer = ByteBuffer.allocate(1024);
int bytesRead = channel.read(buffer);
while (bytesRead != -1) {
buffer.flip(); // 切换为读模式
while (buffer.hasRemaining()) {
System.out.print((char) buffer.get()); // 读取一个字节数据
}
buffer.clear(); // 切换为写模式,继续读取数据
bytesRead = channel.read(buffer);
}
channel.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
コード内の「ファイルのパス」を実際に読み込むファイルのパスに置き換えてください。