java缓冲区是什么意思?如何操作?

BSO 2020-08-27 12:37:01 java常见问答 7504

Java编程语言内容复杂,知识点繁多。今天主要为大家介绍一下,java缓冲区是什么意思,以及如何对它进行文字读写操作。

首先,我们需要知道缓冲区的基本概念。电脑内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。接下来我们分别看一下各区的概述。第一个是栈,它是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。它里面的变量包含局部变量、函数参数等。

第二个是堆,它是由new分配的内存块,编译器不会去管它们的释放,它们被我们的应用程序控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。

第三个是自由存储区,就是那些由malloc等分配的内存块,它和堆是十分相似的,不过它是用free来结束自己的操作的。

第四个是全局/静态存储区。全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,但是在C++里面没有这个区分了,他们共同占用同一块内存区。

最后一个是常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,它是不允许修改的。

总而言之,电脑缓冲区就是预留下来的作为急用的,是暂时置放输出或输入资料的内存。

那么,我们应该如何对缓冲区进行操作呢?

首先,当我们读写文本文件的时候,比较便捷的方法是采用Reader。比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader,它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。使用FileReader读取文件:

FileReader fr = new FileReader("ming.txt");
int ch = 0;
while ((ch = fr.read()) != -1)
{
    System.out.print((char) ch);
}

其中read()方法返回的是读取的下个字符。当然你也可以使用read(char[] ch,int off,int length)。事实上在FileReader中的方法都是从InputStreamReader中继承过来的。read()方法是比较耗费时间的,如果为了提高效率我们可以使用BufferedReader对Reader进行包装,方法是一行一行的读取文本,使用readLine()方法:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while ((data = br.readLine()) != null)
{
    System.out.println(data);
}


以上就是关于java缓冲区的基本原理以及操作方法,想要了解更多关键java基础,敬请关注奇Q工具网。

推荐阅读:

java文件读写操作是什么意思?它主要有哪些方式?

java文件字节流和字符流如何区分?如何进行读写操作?

java工作流业务涵盖了哪些方面?自动化解决方案需要具备哪些特征?