gpt4 book ai didi

java - FileChannel 不写任何东西

转载 作者:行者123 更新时间:2023-11-30 08:22:28 25 4
gpt4 key购买 nike

我必须按照小端顺序写一个整数。所以我创建了一个带有 FileChannel 属性和一些写入方法的类(此类不扩展任何内容)。

但是有一个问题:只有一种方法有效,另一种无效!

这里是工作方法(dis是FileChannel):

public void writeBuffer(ByteArrayOutputStream t) throws IOException
{
ByteBuffer buffer=ByteBuffer.wrap(t.toByteArray());
dis.write(buffer);
}

这是其中一种不起作用的写入方法:

public void writeInt(int t) throws IOException
{
ByteBuffer buffer=ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(t);
dis.write(buffer);
}

我调试了程序,dis.write(buffer) 返回 0,这是怎么回事?

有谁知道用小端字节序编写 4 字节整数的替代方法吗?

最佳答案

当您创建一个 ByteBuffer 时(例如使用 ByteBuffer.wrapByteBuffer.allocate),它的创建位置为零。在第二种方法中,您调用 putInt,它将 ByteBuffer 的位置推进到 4(缓冲区的末尾),因此 ByteBuffer 报告没有更多的字节要读取。

有许多方法可以重置缓冲区的位置。正如评论所述,flip可能是最佳选择,因为它专门用于在您将数据放入缓冲区并希望其他代码开始读取该数据时调用。

关于java - FileChannel 不写任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24367913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com