我正在使用Android构建自定义文件创建器应用程序。我试图将Bytebuffer的内容(它是我创建的自定义类的String成员)写入字节类型的文件。但是,每当我这样做时,我都会以String格式获取文件的内容。我尝试了几种替代方法,例如使用get方法,BufferedOutputStream类,ByteArrayOutputStream类,DataOutputStream,Filechannel类等。这是我的代码:
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
我的所有Strings都连接在一起。我想要做的是将相同的内容作为字节写入文件,而不是人类可读的字符串。我在这里缺少什么?任何帮助表示赞赏。
答案 0 :(得分:0)
因此,您需要直接编写数据,而不是构建字符串并从中获取字节数组并将其放入ByteBuffer
并将其写入文件。我将摆脱ByteBuffer
并使用DataOutputStream
的各种API来编写单个字节或整数或其他内容。
完全不清楚是否要将12345678
写为8字节或4字节整数,例如,如果没有澄清,就无法进一步帮助您。