缓冲区出现原因:

Java对IO的读写都是经过中间途经——JVM虚拟机进行管理的,JVM调用OS操作系统继续完成IO操作。如此一来,整个过程耗费了不小的资源,为了尽量减少这样重复的周期性操作,出现了缓冲区,可以有效的提高系统的性能

一、IO缓冲区类

BufferedInputStream ===> 字节输入缓冲流

BufferedOutputStream ===> 字节输出缓冲流

BufferedReader ===> 字符输入缓冲流

BufferedWriter ===> 字符输出缓冲流

二、BufferedInputStream

1.构造方法

BufferedOutputStream(OutputStream out)

BufferedOutputStream(OutputStream out, int size)

2.常用方法

void flush() ===> 刷新缓冲输出流

void write(byte[] b, int off, int len) ===> 从指定的字节数组写入 len个字节,从偏移 off开始到缓冲的输出流

void write(int b) ===> 将指定的字节写入缓冲的输出流

3.使用方法

import java.io.*;

public class MyBuffer {
public static void main(String[] args) throws IOException {
BufferedOutputStream file = new BufferedOutputStream(new FileOutputStream("F:\\data.txt"));
file.write("这是我写入的数据".getBytes());
file.flush();
}
}

二、BufferedInputStream

1.构造方法

BufferedInputStream(InputStream in)

BufferedInputStream(InputStream in, int size)

2.常用方法

int available() ===> 返回从该输入流中可以读取(或跳过)的字节数的估计值

void close() ===> 关闭此输入流并释放与流相关联的任何系统资源。

void mark(int readlimit)

boolean marksupported() ===> 测试这个输入流是否支持 mark和reset方法

int read()

void reset()

long skip(long n)

3.使用方法

import java.io.*;

public class MyBuffer {
public static void main(String[] args) throws IOException { BufferedInputStream file = new BufferedInputStream(new FileInputStream("F:\\data.txt"));
int nums = file.available();
byte[] bytes = new byte[nums];
file.read(bytes);
file.close();
System.out.printf(new String(bytes));
}
}

三、BufferedWriter

1.构造方法

BufferedWriter(Writer out)

BufferedWriter(Writer out, int sz)

2.常用方法

void close() ===> 关闭流,先刷新

void flush() ===> 刷新流

void newLine() ===> 写一行行分隔符

void write(char[]cbuf,int off,int len)写入字符数组的一部分

void write(intc)写一个字符

void write(Strings,int off,int len)写一个字符串的一部分

3.使用方法

import java.io.*;

public class MyBuffer {
public static void main(String[] args) throws IOException { BufferedWriter file = new BufferedWriter(new FileWriter("F:\\info.txt"));
file.write("欢迎来到英雄联盟");
file.flush();
file.close();
}
}

四、BufferedReader

1.构造方法

BufferedReader(Reader in)

BufferedReader(Reader in, int sz)

2.常用方法

void close() ===> 关闭流并释放与之相关联的任何系统资源

Stream<string> lines() ===> 返回一个Stream,其元素是从这个BufferedReader读取的行

void mark(int readAheadLimit) ===> 标记流中的当前位置

boolean marksupported() ===> 告诉这个流是否支持mark()操作

int read() ===> 读一个字符

int read(char[]cbuf,int off,int len) ===> 将字符读入数组的一部分

string readLine() ===> 读一行文字

boolean ready() ===> 告诉这个流是否准备好被读取

void reset() ===> 将流重置为最近的标记

long skip(long n) ===> 跳过字符

3.使用方法

import java.io.*;

public class MyBuffer {
public static void main(String[] args) throws IOException { BufferedReader file = new BufferedReader(new FileReader("F:\\info.txt"));
String info;
while ((info = file.readLine()) != null){
System.out.println(info);
}
}
}

Java第三十二天,IO操作(续集),读写缓冲区的使用的更多相关文章

  1. Java中的IO操作和缓冲区

    目录 Java中的IO操作和缓冲区 一.简述 二.IO流的介绍 什么是流 输入输出流的作用范围 三.Java中的字节流和字符流 字节流 字符流 二者的联系 1.InputStreamReader 2. ...

  2. java中的IO操作

    IO流是用来处理设备之间的数据传输,Java对数据的操作是通过流的方式进行,而操作流的对象都封装到java.io包中.根据操作数据的种类可以把IO流分为字节流(InputStream,OutputSt ...

  3. java中的IO操作总结

    一.InputStream重用技巧(利用ByteArrayOutputStream) 对同一个InputStream对象进行使用多次. 比如,客户端从服务器获取数据 ,利用HttpURLConnect ...

  4. 【转】Java中的IO操作

    在使用io操作之前,先看一下java中的文件类File如何使用.File包括文件和目录,对文件和目录的操作是新建目录mkdir,新建文件createNewFile,删除文件和目录delete,以及其他 ...

  5. 第12讲-Java中的IO操作及对象的序列化与反序列化

    1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1  io操作 1.2.2  对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I ...

  6. 16 IO操作文件读写

    IO的分类 第一种分法: 1.输入流 2.输出流 第二种分法: 1.字节流 2.字符流 第三种分法: 1.节点流 2.处理流 I/O当中的核心类: InputStream  <--------F ...

  7. java学习系列(一)Java中的IO操作

    Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入\输出操作,在Java中把不同的输入\输出源抽象为"流",通过流的方式允许Java程序使用相同的方式来访问不同的输 ...

  8. Java学习笔记——IO操作之对象序列化及反序列化

    对象序列化的概念 对象序列化使得一个程序可以把一个完整的对象写到一个字节流里面:其逆过程则是从一个字节流里面读出一个事先存储在里面的完整的对象,称为对象的反序列化. 将一个对象保存到永久存储设备上称为 ...

  9. Python中的文件IO操作(读写文件、追加文件)

    Python中文件的读写包含三个步骤:打开文件,读/写文件,关闭文件. 文件打开之后必须关闭,因为在磁盘上读写文件的功能是由操作系统提供的,文件作为对象,被打开后会占用操作系统的资源,而操作系统在同一 ...

  10. Java学习笔记——IO操作之以图片地址下载图片

    以图片地址下载图片 读取给定图片文件的内容,用FileInputStream public static byte[] mReaderPicture(String filePath) { byte[] ...

随机推荐

  1. C++ 别踩白块小游戏练习

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <easyx.h> ...

  2. Elasticsearch批量插入时,存在就不插入

    当我们使用 Elasticsearch-py 批量插入数据到 ES 的时候,我们常常使用它的 helpers模块里面的bulk函数.其使用方法如下: from elasticsearch import ...

  3. 从零搭建Spring Cloud Gateway网关(一)

    新建Spring Boot项目 怎么新建Spring Boot项目这里不再具体赘述,不会的可以翻看下之前的博客或者直接百度.这里直接贴出对应的pom文件. pom依赖如下: <?xml vers ...

  4. Linux进程间通信-eventfd

    Linux进程间通信-eventfd eventfd是linux 2.6.22后系统提供的一个轻量级的进程间通信的系统调用,eventfd通过一个进程间共享的64位计数器完成进程间通信,这个计数器由在 ...

  5. VsCode代码段添加方法

    VsCode代码段添加方法 我们在编写代码的过程中,常常会遇到一些固定的结构或常用的处理方法. 编写耗费时间尽力,这时我们想到了添加代码段功能,帮助我们快速的完成编写. 下面以VsCode为例子: 我 ...

  6. 机器学习- Attention Model结构解释及其应用

    概述 Attention Model 的出现,在sequence model的领域中算是一个跨时代的事件.在Many-to-Many的sequence model中,在decoder network中 ...

  7. Core3.1WebApi_ 同源策略_如何支持跨域(转载)

    原文:https://mp.weixin.qq.com/s/id3fOyGrZI9lLx7PKbVYlg

  8. Alterations of brain quantitative proteomics profiling revealed the molecular mechanisms of diosgenin against cerebral ischemia reperfusion effects(大脑的定量蛋白质组学揭示了薯蓣皂苷元对脑缺血再灌注效应的分子机制)

    文献名:Alterations of brain quantitative proteomics profiling revealed the molecular mechanisms of dios ...

  9. python爬取网站页面时,部分标签无指定属性而报错

    在写爬取页面a标签下href属性的时候,有这样一个问题,如果a标签下没有href这个属性则会报错,如下: 百度了有师傅用正则匹配的,方法感觉都不怎么好,查了BeautifulSoup的官方文档,发现一 ...

  10. MySQL优化之避免索引失效的方法

    在上一篇文章中,通过分析执行计划的字段说明,大体说了一下索引优化过程中的一些注意点,那么如何才能避免索引失效呢?本篇文章将来讨论这个问题. 避免索引失效的常见方法 1.对于复合索引的使用,应按照索引建 ...