java buffer 有什么用_在Java中使用ByteBuffer有什么用? [关闭]

问题

什么是aByteBufferin Java的示例应用程序?请列出使用此方法的任何示例方案。谢谢!

#1 热门回答(102 赞)

This很好地描述了它的用途和缺点。无论何时需要执行快速低级I / O,你基本上都可以使用它。如果你要实现TCP / IP协议,或者如果你正在编写数据库(DBMS),则此类将派上用场。

#2 热门回答(77 赞)

ByteBuffer类很重要,因为它构成了在Java中使用通道的基础.ByteBufferclass在字节缓冲区上定义了六类操作:

读取和写入单个字节的绝对和相对get和put方法;

相对批量获取方法,将连续的字节序列从此缓冲区转移到数组中;

相对批量放置方法,将字节数组或其他字节缓冲区中的连续字节序列传输到此缓冲区中;

绝对和相对的get和put方法,用于读取和写入其他基元类型的值,以特定字节顺序将它们转换为字节序列;

创建视图缓冲区的方法,允许将字节缓冲区视为包含某些其他基本类型值的缓冲区;和

压缩,复制和切片字节缓冲区的方法。

Example code : Putting Bytes into a buffer.

// Create an empty ByteBuffer with a 10 byte capacity

ByteBuffer bbuf = ByteBuffer.allocate(10);

// Get the buffer's capacity

int capacity = bbuf.capacity(); // 10

// Use the absolute put(int, byte).

// This method does not affect the position.

bbuf.put(0, (byte)0xFF); // position=0

// Set the position

bbuf.position(5);

// Use the relative put(byte)

bbuf.put((byte)0xFF);

// Get the new position

int pos = bbuf.position(); // 6

// Get remaining byte count

int rem = bbuf.remaining(); // 4

// Set the limit

bbuf.limit(7); // remaining=1

// This convenience method sets the position to 0

bbuf.rewind(); // remaining=7

#3 热门回答(14 赞)

使用面向流的API的Java IO使用缓冲区作为用户空间内的数据的临时存储来执行。通过DMA从磁盘读取的数据首先被复制到内核空间中的缓冲区,然后传输到用户空间中的缓冲区。因此有开销。避免它可以获得相当大的性能提升。

如果有直接访问内核空间中的缓冲区的方法,我们可以跳过用户空间中的这个临时缓冲区。 Java NIO提供了一种方法。

ByteBuffer是Java NIO提供的几个缓冲区之一。它只是一个容器或储存罐,用于从中读取数据或向其写入数据。通过在Buffer上使用allocateDirect()API分配直接缓冲区来实现上述行为。

Java Documentation of Byte Buffer has useful information.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值