1.缓冲流:

  读取数据大量的文件时,读取的速度慢, java提供了一套缓冲流,提高IO流的效率。分为字节缓冲流和字符缓冲流。

字节缓冲流:

    缓冲输出流:BufferedOutputStream  缓冲输入流:BufferesInputStream

BufferedOutputStream:

/*
* 字节输出流的缓冲流 作用 提高效率
* 继承OutputStream
* 构造方法 new BufferedOutputStream(OutputStream out);
*
* */
public class BufferedOutputStreamDemo {
public static void main(String[] args) throws Exception {
// 1创建字节输出流 绑定文件
//FileOutputStream fos =new FileOutputStream("c:\\buffer");
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("c:\\buffer"));
bos.write(65);//自动查码表 utf-8 0 1
//输出字符串
byte[] b= "hello world".getBytes();
bos.write(b);
//截取
bos.write(b, 3, 2);
bos.close();
}
}

BufferesInputStream:

/*
* 字节输入流的缓冲流
* 继承InputStream
* 构造方法
*
* */
public class BufferedInputStreamDemo {
public static void main(String[] args) throws Exception {
//1 创建字节输入流的缓冲流对象
BufferedInputStream b = new BufferedInputStream(new
FileInputStream("c:\\buffer"));
byte[] bs = new byte[1024];
b.close();
int len = 0;
while((len=b.read(bs))!=-1){
System.out.print(new String(bs,0,len));
}
}
}

字符缓冲流,用于文本数据的高速写入

  缓冲输入流BufferedReader  缓冲输出流BufferedWrite

BufferedReader

public class BufferedReaderDemo {
public static void main(String[] args) throws Exception {
//创建字符输入缓冲流对象
BufferedReader bu =new BufferedReader(new FileReader("c:\\bu.txt"));
String len = null;
while((len=bu.readLine())!=null){
System.out.println(len);
}
bu.close();
}
}

BufferedWrite

/*字符输出缓冲流
* write();
* 构造方法 BufferedWriter(Writer w);
* new line() 写换行 \r\n
* linux \n
* */
public class BufferedWriterDemo {
public static void main(String[] args) throws IOException {
//创建字符输出流 封装文件
FileWriter fWriter = new FileWriter("c://bu.txt");
BufferedWriter bufferedWriter = new BufferedWriter(fWriter);
bufferedWriter.write("您好");
bufferedWriter.newLine();//换行
bufferedWriter.write(100);
bufferedWriter.flush();
bufferedWriter.write("床前明月光");
bufferedWriter.close();
}
}

文件缓冲流的复制方式:

/*
* 文件的复制方式
* 1 字节流读写单个字节
* 2 字节流读写字节数组 2405ms
* 3 字节流缓冲区 读写单个字节 4855ms
* 4 字节流缓冲区读写字节数组 697ms
* */
public class Copy {
public static void main(String[] args) throws Exception {
long timeStart = System.currentTimeMillis();
copy4(new File("c:\\liu.mp4"), new File("d:\\liu.mp4"));
long end = System.currentTimeMillis();
System.out.println(end-timeStart);
}
// 4 字节流缓冲区读写字节数组
public static void copy4(File src,File desc) throws Exception{
BufferedInputStream bu = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream ou = new BufferedOutputStream(new FileOutputStream(desc));
int len = 0;
byte[] b=new byte[1024*10];
while((len=bu.read(b))!=-1){
ou.write(b,0,len); }
ou.close();
bu.close();
}
//3 字节流缓冲区 读写单个字节
public static void copy3(File src,File desc) throws Exception{
BufferedInputStream bu = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream ou = new BufferedOutputStream(new FileOutputStream(desc));
int len = 0;
while((len=bu.read())!=-1){
ou.write(len); }
ou.close();
bu.close();
}
//2 字节流读写字节数组
public static void copy2(File src,File desc) throws Exception{
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(desc);
int len = 0;
byte[] b =new byte[1024*10];
while((len=fis.read(b))!=-1){
fos.write(b,0,len);
}
fos.close();
fis.close();
}
//1 字节流读写单个字节
public static void copy1(File src,File desc) throws Exception{
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(desc);
int len = 0;
while((len=fis.read())!=-1){
fos.write(len);
}
fos.close();
fis.close();
}
}

java_26 缓冲流的更多相关文章

  1. 字节流VS缓冲流

    ---恢复内容开始--- 字节流VS缓冲流 java.io包中的类大致可以分为:InputStream.OutputStream.Reader.Writer.InputStream/Reader可以理 ...

  2. JAVA基础学习day20--IO流二-缓冲流、字节流

    一.缓冲流 1.1.字符流的缓冲区 缓冲区的出现是为了提高IO的读写效率 对应类 BufferedReader BufferedWriter 缓冲区要结合流才可以使用 在流的基础上对流的功能进行了增强 ...

  3. java 21 - 6 字符缓冲流的特殊方法以及该方法高效复制文件

    字符缓冲流的特殊方法: A.BufferedWriter: public void newLine():根据系统来决定换行符 private static void write() throws IO ...

  4. Java I/O第二篇 之 (缓冲流 随机流 数组流 数据流)

    1:缓冲流 BufferedReader  BufferedWriter 具有较强的读写能力,能单独读写一行数据,能够减少对硬盘的访问次数. /** * 缓冲流 能够增强对问价数据的可读性,减少访问读 ...

  5. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)

    1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中  数据源: a.txt -- 读取数据 ...

  6. Java基础知识强化之IO流笔记40:字符流缓冲流之特殊功能 [ newLine() / readLine() ]

    1. 字符缓冲流的特殊方法 BufferedWriter: public void newLine():根据系统来决定换行符 BufferedReader: public String readLin ...

  7. Java基础知识强化之IO流笔记39:字符流缓冲流之复制文本文件案例01

    1. 字符流缓冲流之复制文本文件案例 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 -- 字符转换流 -- InputStreamRe ...

  8. Java基础知识强化之IO流笔记38:字符流缓冲流之BufferedWriter / BufferedReader使用

    1. 字符流缓冲流: 字符流为了高效读写,也提供了对应的字符缓冲流. BufferedWriter:字符缓冲输出流 BufferedReader:字符缓冲输入流 2. BufferedWriter使用 ...

  9. java的 IO流之缓冲流(转载)

    java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装.当对文件或其他目标频繁读写或操作效率低,效能差.这时使用缓冲流能够更高效的读写信息.因为缓冲流先将数据缓存起来 ...

随机推荐

  1. mysql创建表及插入数据操作步骤及注意要点

    环境:mysql workbench 1.创建新的表,注意,指定要存放的数据库 列名可以加单引号(键盘上1左边的引号),也可以不加 2.插入数据 注意:如果数据是字符型,必须使用单引号或者双引号,如: ...

  2. {"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}

    ElasticSearch-head 查询报 406错误码 {"error":"Content-Type header [application/x-www-form-u ...

  3. Nginx——基本操作

    1.获得root用户权限 如果鉴定失败多试几次 一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install ...

  4. DRF 认证、权限、限制

    DRF 认证.权限.限制   认证: 定义一个用户表和一个保存用户的Token表 # ======================day96======================= class ...

  5. springboot学习三:整合jsp

    在pom.xml加入jstl <!--springboot tomcat jsp 支持开启--> <dependency> <groupId>org.apache. ...

  6. 提取和匹配线特征的一个demo

    一.代码来源: https://github.com/drozdvadym/opencv_line_descriptor 二.依赖包:OpenCV 2.4.9 三.Matching的运行结果截图: 四 ...

  7. spring boot apollo demo

    controller 监听器,监听配置实时变化 src/main/resources---->META-INF---->app.properties apollo 界面 测试访问 : 实时 ...

  8. Picasso, ImageLoader, Fresco, Glide 优劣

    Fresco:是Facebook 在今年上半年开源的图片缓存优点:1. 图片存储在安卓系统的匿名共享内存, 而不是虚拟机的堆内存中, 图片的中间缓冲数据也存放在本地堆内存,所以, 应用程序有更多的内存 ...

  9. java实现HTTP Basic认证

    这两天一直在调试EMQ的API,通过HTTP的GET请求,可以查询到订阅列表信息,在浏览器中测试时,需要输入用户名和密码,然后才能显示出结果,输错或者不输入会返回401错误. 通过浏览器输入用户名和密 ...

  10. 原生js开发vue的双向数据绑定

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...