我曾经使用mappedbytebuffer和filechannel生成二进制文件,如下所示:
final Path fullPath = ..
final File parent = fullPath.toFile();
FileChannel out=null;
out = new RandomAccessFile(new File(parent, "myFileName"), "rw").getChannel();
MappedByteBuffer buffer=null;
buffer = out.map(FileChannel.MapMode.READ_WRITE, 0, size);
buffer.order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(12);
buffer.putFloat(25);
buffer.putFloat(32);
我尝试使用hadoop api生成相同的二进制文件,如下所示:
FileSystem hadoopFileSys= hadoopDataSource.getFileSystem();
FSDataOutputStream outputStream=null;
outputStream = hadoopFileSys.create(hadoopPath);
outputStream.writeInt(12);
outputStream.writeFloat(25);
outputStream.writeFloat(32);
我的问题是,使用hadoopapi生成的文件与使用nioapi生成的文件不一致。
我需要两个genrated文件是相同的,因为他们将由相同的工具解析。
1条答案
按热度按时间ocebsuys1#
hadoopfs使用big-endian。所以你真的需要使用:
nio公司:
hadoop: