java_26 缓冲流
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 缓冲流的更多相关文章
- 字节流VS缓冲流
---恢复内容开始--- 字节流VS缓冲流 java.io包中的类大致可以分为:InputStream.OutputStream.Reader.Writer.InputStream/Reader可以理 ...
- JAVA基础学习day20--IO流二-缓冲流、字节流
一.缓冲流 1.1.字符流的缓冲区 缓冲区的出现是为了提高IO的读写效率 对应类 BufferedReader BufferedWriter 缓冲区要结合流才可以使用 在流的基础上对流的功能进行了增强 ...
- java 21 - 6 字符缓冲流的特殊方法以及该方法高效复制文件
字符缓冲流的特殊方法: A.BufferedWriter: public void newLine():根据系统来决定换行符 private static void write() throws IO ...
- Java I/O第二篇 之 (缓冲流 随机流 数组流 数据流)
1:缓冲流 BufferedReader BufferedWriter 具有较强的读写能力,能单独读写一行数据,能够减少对硬盘的访问次数. /** * 缓冲流 能够增强对问价数据的可读性,减少访问读 ...
- Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)
1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 ...
- Java基础知识强化之IO流笔记40:字符流缓冲流之特殊功能 [ newLine() / readLine() ]
1. 字符缓冲流的特殊方法 BufferedWriter: public void newLine():根据系统来决定换行符 BufferedReader: public String readLin ...
- Java基础知识强化之IO流笔记39:字符流缓冲流之复制文本文件案例01
1. 字符流缓冲流之复制文本文件案例 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 -- 字符转换流 -- InputStreamRe ...
- Java基础知识强化之IO流笔记38:字符流缓冲流之BufferedWriter / BufferedReader使用
1. 字符流缓冲流: 字符流为了高效读写,也提供了对应的字符缓冲流. BufferedWriter:字符缓冲输出流 BufferedReader:字符缓冲输入流 2. BufferedWriter使用 ...
- java的 IO流之缓冲流(转载)
java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装.当对文件或其他目标频繁读写或操作效率低,效能差.这时使用缓冲流能够更高效的读写信息.因为缓冲流先将数据缓存起来 ...
随机推荐
- java 调用c# web api 代码
上次我们写的.net web api 给对方公司的java团队调用,他们觉得说java无法调用.net 写的api ,靠居然有这事,索性自己写一个java的demo给他们 使用apache的Http ...
- NoSuchMethodError解决方法
下面演示下如何在啥都不知道的情况下遇到该错误的解决思路: 随便找一个错误示例: Caused by: java.lang.NoSuchMethodError: org.eclipse.jdt.inte ...
- c# 访问共享文件
#region 连接共享文件夹 /// <summary> /// 连接共享文件夹 /// </summary> public bool ConnectToSharedFold ...
- Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
目标需求 实现一张小图片,被点击后变成一个在整个屏幕上显示的大图片.类似于微信朋友圈的图片. 实现流程 1.Fresco基本初始化 2.下载并且导入ZoomableDraweeView 它是实现大图的 ...
- Logparser介绍
原文链接:https://www.cnblogs.com/Jerseyblog/p/3986591.html Logparser是一款非常强大的日志分析软件,可以帮助你详细的分析网站日志.是所有数据分 ...
- Zabbix 配置监控主机
1.新建主机: zabbix中的主机(Host)是要监控的网络实体(物理的,或者虚拟的);zabbix中,对于主机的定义非常灵活,它可以时一台物理服务器,一个网络交换机,一个虚拟机或者一些应用 zab ...
- QTP测试.NET程序的时候,ComboBox下拉框控件选择后,运行时对象不可见解决方案
解决方法: 录制时,选择下拉框数据的时候,不要鼠标单击选择,而是要用ENTER(回车键)来选择,才能完成选择,这样录制就OK了.
- Linux 文本文件编辑命令
1.cat 查看纯文本文件,内容较少的,cat[选项][文件],显示行号的 -n 2.more 查看纯文本文件,内容较多的,more[选项]文件 3.head 查看纯文本文档的前N行,head -n ...
- 循环队列搜索 Search in Rotated Sorted Array
这里比较重要的是,不要一上来就判断mid 和 target有没有关系.因为数组是无序的,这样的判断毫无结论,只会搞的更复杂.应该先想办法判断出哪一侧是有序的. class Solution { pub ...
- php解决高并发问题
我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键.举个例子,我们假设处理一个业务请求平均响应时间为10 ...