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 个字节的整数,例如,不说明就无法进一步帮助您。