我正在建立一个自定义的文件创建与Android应用程序。我试图将Bytebuffer的内容(它是我创建的自定义类中的字符串成员)写入字节类型的文件。但是,每当我这样做时,我得到的是字符串格式的文件内容。我尝试了几种替代方法,例如使用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();
}
12345678-1234-1234-1234-123456789ABCJPGIDF1.00000166178
这是我所有的字符串连接起来的。我想做的是将相同的内容以字节的形式写入文件,而不是以人类可读的字符串的形式写入文件。我在这里错过了什么?任何帮助都很感激。
因此,不需要构建字符串并从中获取字节数组,然后将其放入bytebuffer
并将其写入文件,而是需要直接写入数据。我将去掉ByteBuffer
,并使用DataOutputStream
的各种API来编写各个字节或int或其他内容。
例如,您完全不清楚要将12345678
写成8字节还是4字节的整数,如果不加以说明,就不可能进一步帮助您。
问题内容: 我有一个返回字符串的函数。该字符串包含回车符和换行符(0x0D,0x0A)。但是,当我写入文件时,它仅包含换行符。有没有一种方法可以使输出包括回车和换行符。 问题答案: 如果要写入字节,则应以二进制模式打开文件。
问题内容: 方案:各种文件的大小以字节为单位存储在数据库中。将大小信息格式化为千字节,兆字节和千兆字节的最佳方法是什么?例如,我有一个MP3,Ubuntu显示为“ 5.2 MB(5445632字节)”。如何在网页上将其显示为“ 5.2 MB”,并且文件大小小于1 MB的文件显示为KB,文件大小大于1 GB的文件显示为GB? 问题答案: (取自php.net,那里还有许多其他示例,但我最喜欢这个示例
问题 你想在文本模式打开的文件中写入原始的字节数据。 解决方案 将字节数据直接写入文件的缓冲区即可,例如: >>> import sys >>> sys.stdout.write(b'Hello\n') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str,
问题内容: 假设我有一组代表IP数据包的缓冲区,那么如何生成PCAP文件?我正在寻找API以C / C ++或Java来做到这一点。 问题答案: jnetpcap包括类PcapDumper作为将写入字节的阵列以一个PCAP文件记录在这里。 [给原始提问者的提示:这个答案被否决了,因为我回答了您的问题,并批评其他人提出了合理的问题,而不是因为答案实际上是错误的。
我已经将一个图像文件读入了ByteArray中,但是我如何将它写回。我的意思是将ByteArray保存到文件系统中的图像文件中。首选PNG格式。 我从PNG文件到ByteArray的代码:
问题内容: 如何在Java中将字节数组写入文件? 问题答案: 可以使用IOUtils.write(字节[]数据,OutputStream的输出)从Apache的百科全书IO。