当前位置: 首页 > 知识库问答 >
问题:

Java以字节格式将字节从Bytebuffer写入文件

刁远
2023-03-14

我正在建立一个自定义的文件创建与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

这是我所有的字符串连接起来的。我想做的是将相同的内容以字节的形式写入文件,而不是以人类可读的字符串的形式写入文件。我在这里错过了什么?任何帮助都很感激。

共有1个答案

潘宝
2023-03-14

因此,不需要构建字符串并从中获取字节数组,然后将其放入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。