Java第三十二天,IO操作(续集),读写缓冲区的使用
缓冲区出现原因:
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);
}
}
}