繁体   English   中英

Java以字节格式将字节缓冲区中的字节写入文件

[英]Java write bytes from Bytebuffer to File in byte format

我正在使用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并从中获取字节数组,然后将其放入ByteBuffer并将其写入文件。 我将摆脱ByteBuffer并使用DataOutputStream的各种API来写入单个字节或整数或其他内容。

例如,完全不清楚是要以8字节还是以4字节整数形式写入12345678 ,因此无法不进一步帮助您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM