Java のバイト オーダー マーク (BOM) は、ファイルの読み取り時に問題を引き起こす可能性があります
BOM をファイル形式に書き込むコード作成者にとって、BOM は便利です。ただし、これらのファイルを読み取る場合、特に Java のようなプラットフォームに依存しない言語の場合、状況が複雑になる可能性があります。
BOM をスキップするには、次の手順に従います。
BOM をスキップしてファイルを読み取る方法の例を次に示します。
import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.nio.file.StreamOpener; import java.nio.channels.FileChannel; public class SkipBOMExample { public static void main(String[] args) throws IOException { Path file = Paths.get("path/to/file.txt"); FileSystem fs = FileSystems.getFileSystem(file.getFileSystem()); FileSystemProvider provider = fs.provider(); StreamOpener opener = (Path path, StandardOpenOption... options) -> { FileChannel channel = provider.newByteChannel(path, options); // 跳过3个字节(BOM的大小) channel.position(3); return channel; }; try (FileChannel channel = Files.newByteChannel(file, StandardOpenOption.READ, opener)) { byte[] bytes = new byte[1024]; while (channel.read(bytes) != -1) { // 处理读取到的字节 } } } }
この方法を使用すると、BOM BOM を含むファイルを読み取るときにスキップして、読み取ることができます。ファイルの内容を正確に記録します。
以上がJava でファイルを読み取るときにバイト オーダー マーク (BOM) を効率的にスキップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。