为啥我不能将字符串添加到 ByteBuffer?

Posted

技术标签:

【中文标题】为啥我不能将字符串添加到 ByteBuffer?【英文标题】:Why can't I add a String to a ByteBuffer?为什么我不能将字符串添加到 ByteBuffer? 【发布时间】:2014-07-31 05:47:55 【问题描述】:

当我尝试将字符串添加到字节缓冲区时,它不会写入文件中。虽然我尝试添加 int 和 double 它工作正常。但是对于字符串它不起作用。

buffer.asCharBuffer().put(value.getValue1());
buffer.asCharBuffer().put(value.getValue2());

【问题讨论】:

请添加一些上下文。什么文件? value.getValueX() 是什么? buffer 是什么?你想做什么? 然后定义不工作。你认为它应该做什么,为什么?它做了什么? 【参考方案1】:
    分配一个新的ByteBuffer 并将其大小设置为足够大的数字,以避免在向其放入字节时缓冲区溢出 使用asCharBuffer() API 方法可以直接将字符放入字节缓冲区中

    使用put(String) API 方法,我们可以将字符串直接放入字节缓冲区

    toString() API 方法返回ByteBuffer 内容的字符串表示形式。不要忘记flip()ByteBuffer,因为toString() API 方法会从当前缓冲区的位置向前显示ByteBuffer 的内容:

UseByteBufferToStoreStrings:

import java.nio.ByteBuffer;
import java.nio.CharBuffer;
public class UseByteBufferToStoreStrings 

    public static void main(String[] args) 

        // Allocate a new non-direct byte buffer with a 50 byte capacity


    // set this to a big value to avoid BufferOverflowException
        ByteBuffer buf = ByteBuffer.allocate(50); 

        // Creates a view of this byte buffer as a char buffer
        CharBuffer cbuf = buf.asCharBuffer();

        // Write a string to char buffer
        cbuf.put("Your sting");

        // Flips this buffer.  The limit is set to the current position and then
        // the position is set to zero.  If the mark is defined then it is discarded
        cbuf.flip();

        String s = cbuf.toString();  // a string

        System.out.println(s);

    


read more...

【讨论】:

你没有解决 OP 的问题。【参考方案2】:

如果您想使用 getBytes() 方法的返回值将 String 添加到 ByteBuffer 中。

buf.put("Your string".getBytes); 

【讨论】:

以上是关于为啥我不能将字符串添加到 ByteBuffer?的主要内容,如果未能解决你的问题,请参考以下文章

ByteBuffer 和字节数组

为啥我不能在 IE 中将包含脚本标签的字符串添加到 innerHTML

如何在 Kotlin 中将数据类转换为 ByteBuffer?

为啥我不能以这种方式将数据添加到 Firebase?

为啥我不能将用户添加到 Atlassian 的 Jira 中的角色?

为啥websocket传不了bytebuffer