Java NIO缓冲区

缓冲区(Buffers)在java.nio包中定义。 它定义了所有缓冲区通用的核心功能:限制,容量和当前位置。

Java NIO缓冲区用于与NIO通道进行交互。这是写入数据的内存块,以便在稍后再次进行读取。 内存块用NIO缓冲对象包装,这样可以提供更简单的方法来处理内存块。

缓冲区类型

对于每个原始类型,都有一个缓冲区类型,所有缓冲区都可以实现缓冲区接口。 大多数使用的缓冲区类型是ByteBuffer

在Java NIO中使用的核心缓冲区如下:

  • CharBuffer
  • DoubleBuffer
  • IntBuffer
  • LongBuffer
  • ByteBuffer
  • ShortBuffer
  • FloatBuffer

上述缓冲区覆盖了我们可以通过I/O发送的基本数据类型:charactersdoubleintlongbyteshortfloat

在NIO中,使用java.nio.Buffer类中实现的缓冲区进行数据传输。它与数组相似,具有固定的容量大小。

分配缓冲区

为了获得缓冲区对象,我们必须首先分配一个缓冲区。在每个Buffer类中,allocate()方法用于分配缓冲区。

下面来看看ByteBuffer分配容量为28字节的例子:

ByteBuffer buf = ByteBuffer.allocate(28);

Java

下面来看看另一个示例:CharBuffer分配空间大小为2048个字符。

CharBuffer buf = CharBuffer.allocate(2048);

Java

从缓冲区读取数据

从缓冲区读取数据有两种方法:

  • 通过使用get()方法之一读取Buffer中的数据。
  • 将数据从缓冲区读入通道。

下面来看看使用get()方法从Buffer读取数据的例子:

byte aByte = buf.get();

Java

下面来看看如何将Buffer中的数据读入通道的例子:

int bytesWritten = inChannel.write(buf);

Java

将数据写入缓冲区

将数据写入缓冲区有两种方法:

  • 使用put()方法将数据写入缓冲区。
  • 将数据从Channel写入缓冲区。

基本缓冲区示例

下面来看看使用BufferedReadertestout.txt文件中读取行的简单示例:

package com.yiibai;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class BufferedReaderDemo {
    public static void main(String[] args) {
        Path file = null;
        BufferedReader bufferedReader = null;
        String relativelyPath = System.getProperty("user.dir");
        try {
            file = Paths.get(relativelyPath + "/testout.txt");
            InputStream inputStream = Files.newInputStream(file);

            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            System.out.println("Reading the Line of testout.txt file: \n" + bufferedReader.readLine());

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bufferedReader.close();
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }
    }
}

Java

执行上面示例代码,得到以下输出结果:

Reading the Line of testout.txt file: 
易百教程定位为IT技术入门学习实例教程网站

Shell

上述程序读取testout.txt文件的第一行,然后在控制台上打印文件的第一行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值