Byte Order Mark (BOM) in Java can cause problems when reading files
For those code writers who write BOM to their file format Say, BOM is useful. However, when it comes to reading these files, especially for a platform-independent language like Java, the situation can be complicated.
To skip the BOM, follow these steps:
Here is an example of how to skip the BOM and read the file:
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) { // 处理读取到的字节 } } } }
By using this method you can skip when reading the file containing the BOM BOM and read the file contents accurately.
The above is the detailed content of How Can I Efficiently Skip the Byte Order Mark (BOM) When Reading Files in Java?. For more information, please follow other related articles on the PHP Chinese website!