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. ionic2 调用 cordova非本地化native 插件方法

    1,在项目中添加你的插件     cordova plugin add puginId|puginName|puginUrl|puginPath 2,查看插件clobbers标记 打开项目目录plug ...

  2. logging模块全总结

    Python之日志处理(logging模块)   本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...

  3. pycharm 激活码

    http://www.cnblogs.com/itfat/p/9388829.html

  4. hive 一次更新多个分区的数据

    类似订单数据之类的表,因为有状态要更新,比如订单状态,物流状态之类的, 这样就需要同步很久之前的数据,目前我的订单表是更新前面100天的数据. hive中操作是先删除前面100个分区的数据,然后重新动 ...

  5. ubuntu下的git版本创建

    一.git的特点 二.gei的安装和配置 1.安装命令如下 sudo apt-get install git 2.安装成功后输入 git 3.创建版本库 git init 4.使用 先创建一个txt文 ...

  6. (Python基础)简单购物车代码

    以下是最简单,最基础的购物车代码,一起学习,一起参考.product_list = [ ('Iphone',5800), ('Mac Pro',15800), ('car',580000), ('co ...

  7. lambda 和 iterable

    Lambda 表达式 你可以使用 Lambda 表达式创建匿名函数,即没有名称的函数.lambda 表达式非常适合快速创建在代码中以后不会用到的函数.尤其对高阶函数或将其他函数作为参数的函数来说,非常 ...

  8. 1. vs code 设置快捷键与eclipse一样

    keybindings.json文件路径在:C:\Users\Administrator\AppData\Roaming\Code\User\keybindings.json { "key& ...

  9. ArcGIS API for JS 测量线长(各折线段)

    这里测量长度主要分为两个方面,一个是在绘制长折线段时,不仅需要显示总线段的长度,还要在各线段的中间显示各折线段的长度:另一个则是在绘制多边形时,不仅需要显示多边形的面积,还需要在各边的中间显示线段长. ...

  10. New York is 3 hours ahead of California

    New York is 3 hours ahead of California, 纽约时间比加州时间早三个小时, but it does not make California slow. 但加州时间 ...