FileChannel を使用してファイルをネイティブに読み込む方法

FileChannelを使用してファイルをリードする手順は次のとおりです。

  1. ファイル入力ストリーム
  2. ランダムアクセスファイル
FileChannel channel = FileChannel.open(Paths.get("文件路径"), StandardOpenOption.READ);
  1. 読み込まれるデータを受け取る `ByteBuffer` オブジェクトを作成します。サンプルコードを次に示します。
ByteBuffer buffer = ByteBuffer.allocate(1024);
  1. 読み取り()
int bytesRead = channel.read(buffer);
  1. データがファイルの末尾検出されるまで繰り返し読み取る。以下に例を示す:
while (bytesRead != -1) {
    buffer.flip(); // 切换为读模式
    while (buffer.hasRemaining()) {
        System.out.print((char) buffer.get()); // 读取一个字节数据
    }
    buffer.clear(); // 切换为写模式,继续读取数据
    bytesRead = channel.read(buffer);
}
  1. 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();
        }
    }
}

コード内の「ファイルのパス」を実際に読み込むファイルのパスに置き換えてください。

bannerAds