Java 以字节格式将字节从字节缓冲区写入文件
Java write bytes from Bytebuffer to File in byte format
我正在使用 Android 构建自定义文件创建器应用程序。我正在尝试将 Bytebuffer 的内容写入字节类型的文件,这些内容是我创建的自定义 class 中的 String 成员。但是,每当我这样做时,我都会以 String 格式获取文件的内容。我尝试了几种替代方法,例如使用 get 方法、BufferedOutputStream class、ByteArrayOutputStream class、DataOutputStream、Filechannel class 等。这是我的代码:
ByteBuffer byteBuffer = ByteBuffer.allocate(totalSize);
byteBuffer.put(hm.getDocID().getBytes());
byteBuffer.put(hm.getFextension().getBytes());
byteBuffer.put(hm.getMagic().getBytes());
byteBuffer.put(hm.getFversion().getBytes());
byteBuffer.put(hm.getFsize().getBytes());
byteBuffer.flip();
byte[] bablock = new byte[byteBuffer.remaining()];
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(idHeader));
bos.write(bablock);
bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
在我的 idHeader 文件中不断获取以下内容:
12345678-1234-1234-1234-123456789abcjpgIDF1.00000166178
这是我所有的字符串连接。我想做的是将与字节相同的内容写入文件,而不是作为人类可读的字符串。我在这里缺少什么?感谢任何帮助。
因此,您需要直接写入数据,而不是构建字符串并从中获取字节数组并将它们放入 ByteBuffer
并将其写入文件。我会摆脱 ByteBuffer
并使用 DataOutputStream
的各种 API 来编写单个字节或整数或其他任何内容。
完全不清楚您要将 12345678
写成 8 个字节还是 4 个字节的整数,例如,不说明就无法进一步帮助您。
我正在使用 Android 构建自定义文件创建器应用程序。我正在尝试将 Bytebuffer 的内容写入字节类型的文件,这些内容是我创建的自定义 class 中的 String 成员。但是,每当我这样做时,我都会以 String 格式获取文件的内容。我尝试了几种替代方法,例如使用 get 方法、BufferedOutputStream class、ByteArrayOutputStream class、DataOutputStream、Filechannel class 等。这是我的代码:
ByteBuffer byteBuffer = ByteBuffer.allocate(totalSize);
byteBuffer.put(hm.getDocID().getBytes());
byteBuffer.put(hm.getFextension().getBytes());
byteBuffer.put(hm.getMagic().getBytes());
byteBuffer.put(hm.getFversion().getBytes());
byteBuffer.put(hm.getFsize().getBytes());
byteBuffer.flip();
byte[] bablock = new byte[byteBuffer.remaining()];
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(idHeader));
bos.write(bablock);
bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
在我的 idHeader 文件中不断获取以下内容:
12345678-1234-1234-1234-123456789abcjpgIDF1.00000166178
这是我所有的字符串连接。我想做的是将与字节相同的内容写入文件,而不是作为人类可读的字符串。我在这里缺少什么?感谢任何帮助。
因此,您需要直接写入数据,而不是构建字符串并从中获取字节数组并将它们放入 ByteBuffer
并将其写入文件。我会摆脱 ByteBuffer
并使用 DataOutputStream
的各种 API 来编写单个字节或整数或其他任何内容。
完全不清楚您要将 12345678
写成 8 个字节还是 4 个字节的整数,例如,不说明就无法进一步帮助您。