FileInputStream、FileOutputStream、FileReader、FileWriter属于基础流。
缓冲流是高级流。能够高效的处理数据。原理:底层自带了长度为8192的缓冲区提高性能
字节缓冲流:BufferedInputStream、BufferedOutputStream
字符缓冲流:BufferedReader、BuffereWriter
字节缓冲流
public BufferedInputStream(InputStream is) | 把基本流包装成高级流,提高读取数据的性能 |
public BufferedOutputStream(OutputStream os) | 把基本流包装成高级流,提高写出数据的性能 |
拷贝文件:
一次读取一个字节
原理:
一个读取多个字节:
一个读取多个字节原理与一次读取一个字节类似:
字符缓冲流
原理:底层自带了长度为8192的缓冲区提高性能
基本流中也有缓存区,所以提高效率情况不明显。
public BufferedReader(Reader r) | 把基本流变成高级流 |
public BufferedWriter(Writer r) | 把基本流变成高级流 |
字符缓冲流特有办法
public String readLine() | 读取一行数据,如果没有数据可读了,返回null(输入特有方法) |
public void newLine( ) | 跨平台的换行(输出特有方法) |
各平台换行:Mac:\r Windows:\r\n Linux:\n
利用readLine()打印一行
利用readLine()打印全文本
利用字符缓冲输出流写文本,newLine()换行
开启续写:
练习:软件运行次数
实现一个验证程序运行次数的小程序,要求:
1.当程序运行超过3次时给出提示:本软件只能免费使用三次,欢迎您注册会员后继续使用
2.程序运行演示如下:
- 第一次运行控制台输出:欢迎使用本软件,第1次使用免费
- 第二次运行控制台输出:欢迎使用本软件,第2次使用免费
- 第二次运行控制台输出:欢迎使用本软件,第3次使用免费
- 第四次及以后输出:本软件只能免费使用三次,欢迎您注册会员后继续使用
//验证程序运行次数
public class Test01 {public static void main(String[] args) throws IOException {//1.把文件中的数字读取到内容中BufferedReader br=new BufferedReader(new FileReader("C_S\\a.txt"));String line=br.readLine();int count=Integer.parseInt(line);//将字符型数字转为整型count++;//表示当前软件又运行了一次//2.判断if (count<=3){System.out.println("欢迎使用本软件,第"+count+"次使用免费");}else {System.out.println("本软件只能免费使用三次,欢迎您注册会员后继续使用");}//3.把当前自增之后的count写出到文件当中BufferedWriter bw=new BufferedWriter(new FileWriter("C_S\\a.txt"));bw.write(count+"");//write写97,会转换为对应数字的ASCII码,+“”就直接输出bw.close();}
}
IO:随用随创建、什么时候不用什么时候就关闭