java 缓冲流 Buffer
缓冲流 Buffer :设置缓冲区加快执行效率
子类:
(一)BufferedInputStream : 缓冲输入字节流 ,目的:提高读取文件的效率
注意: BufferedInputStream 他是没有读写数据的功能
内部实现 : 你面维护了一个8字节的byte数组。
使用步骤:
1.找到一个目标文件.
2.建立通道 new FileInputStream(" ");
3.创建一个缓冲字节输入流 new BufferedInputStream(FileInputStream);
4.读取数据 read();
5.关闭资源 close();
(二)BufferedOutputStream :缓冲输出字节流 内部维护了一个 8k的字节数组
作用: 提高文件的输出的效率,可以提供其他的方法。
使用:
1.找目标
2.建立通道 FileOutputStream
3.创建一个缓冲字节输出流
4.写数据,不会写入到磁盘中。 如果数组中的数据已经满了,才会自动将数据写入到磁盘中。
5.将数据写入到磁盘 : 调用flush(),或者关闭资源。
6.关闭资源。
(三)BuffredRead 缓冲输入字符流。
有一个扩展的功能:readLine(); // 可以一次读一行文字。
(四)BufferedWriter: 缓冲输出字符流
内部提供一个8192长度的字符数组作为这样一个缓冲区。
BufferedWriter作用 :提高写入的效率,拓展FileWriter的功能。
newLine(); //换行写入数据
简单的字节缓冲流案例
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; public class buffered { /**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//bufInTest();
bufOutTest();
} //(1)BufferedInputStream 的使用
public static void bufInTest() throws IOException{
//1.找到目标
File file = new File("D:\\a.txt");
//2.创建通道
FileInputStream fis = new FileInputStream(file); //**3.创建一个缓冲输入字节流******
BufferedInputStream bfis = new BufferedInputStream(fis); //4.开始写入数据
int content = 0; // 一次只会取一个字节
while ((content= bfis.read())!= -1) { // 还是一个一个的读取 问什么可以提高效率呢?
System.out.print((char)content);
}
//5.关闭通道
bfis.close();
} //(2)BufferedOutputStream 的使用
public static void bufOutTest() throws IOException{ //1.找目标
File file = new File("D:\\b.txt");
//2.创建通道
FileOutputStream fos = new FileOutputStream(file); //3.创建缓冲流
BufferedOutputStream bfos = new BufferedOutputStream(fos); //4.创建写入文件的数据
String string = "good good study day day up"; //5.写数据, 到这一步只是将数据保存到内存中字节数组中。
bfos.write(string.getBytes()); //6.再刷新 将数据写入到磁盘中
//bfos.flush(); //7.关闭资源
bfos.close();//内部会实现flush();
}
}
简单的字符缓冲流案例
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class fileReader { public static void main(String[] args) throws IOException {
testBufferedWriter();
testBufferedRead();
}
//(1)缓冲输出字符流的使用
public static void testBufferedWriter() throws IOException{ //1.建立一个通道,指定一个路径
FileWriter fiw = new FileWriter("D:\\a.txt",true); //2.创建缓冲流
BufferedWriter bfw = new BufferedWriter(fiw); //让数据换行显示
bfw.newLine(); //换行写入数据 //3.开始写入数据
bfw.write("上课不要吃东西"); //4.关闭资源
bfw.close(); // 关闭资源之前会做一个刷新操作。调用flush()方法。
} //(2)缓冲输入字符流的使用
public static void testBufferedRead() throws IOException{ //1.创建通道并且指定路径
FileReader fir = new FileReader("D:\\b.txt"); //2.创建缓冲流
BufferedReader bfr = new BufferedReader(fir); //3.1、开始读取数据(一次读取一个字节)
int content = 0;
while ((content = bfr.read()) != -1) { System.out.print((char)content);
} //3.2、readLine()扩展功能,读取一行数据
String string1 = bfr.readLine();
System.out.println(string1); //一次读取一行数据(返回字符串),效率更高
String string = null;
while ((string = bfr.readLine()) != null) {
System.out.println(string);
} //4.关闭
bfr.close();
}
}
java 缓冲流 Buffer的更多相关文章
- Java缓冲流高效大文件的复制实例
public class BufferedDemo { public static void main(String[] args) throws FileNotFoundException { // ...
- Java缓冲流细节
FileOutPutStream继承OutputStream,并不提供flush()方法的重写所以无论内容多少write都会将二进制流直接传递给底层操作系统的I/O,flush无效果.而Buffere ...
- Java缓冲流的优点和原理
不带缓冲的流的工作原理: 它读取到一个字节/字符,就向用户指定的路径写出去,读一个写一个,所以就慢了. 带缓冲的流的工作原理: 读取到一个字节/字符,先不输出,等凑足了缓冲的最大容量后一次性写出去,从 ...
- java 缓冲流
english.txt The arrow missed the target. They rejected the union demand. Where does this road go to? ...
- Java缓冲流写出数据实例
public class BufferedWriterDemo throws IOException { public static void main(String[] args) throws I ...
- java的 IO流之缓冲流(转载)
java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装.当对文件或其他目标频繁读写或操作效率低,效能差.这时使用缓冲流能够更高效的读写信息.因为缓冲流先将数据缓存起来 ...
- Java I/O流操作(二)---缓冲流[转]
转自:http://blog.csdn.net/johnny901114/article/details/8710403 一.BufferWriter类 IO的缓冲区的存在就是为了提高效率,把要操作的 ...
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...
- java IO之 File类+字节流 (输入输出 缓冲流 异常处理)
1. File类
随机推荐
- MySQL基础笔记(三) 复杂查询
所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...
- ZOJ 2859 二维线段树
思路:自己写的第二发二维线段树1A.哈哈,看来对二维的push操作比較了解了:可是还没遇到在两个线段树中同一时候进行push操作的,事实上这题我是想在x维和y维同一时候进行push操作的.可是想了好久 ...
- java-组合优于继承
组合和继承.都能实现对类的扩展. 差别例如以下表所看到的 组合 继承 has-a关系 is-a关系 执行期决定 编译期决定 不破坏封装,总体和局部松耦合 破坏封装,子类依赖父类 支持扩展,任意添加组合 ...
- ecshop广告宽度值必须在1到1024之间的解决方法
ecshop加广告出现广告位的宽度值必须在1到1024之间的解决方法,这个问题是今天刚刚发现的,我就郁闷了,如今1024宽度的广告能做什么.你看看京东,天猫,非常多都是大型的横幅广告,这点ecshop ...
- 解决javah生成.h头文件找不到找不到android.support.v7.app.AppCompatActivity的问题
问题描写叙述: 在使用Android Studio进行JNI开发时,须要使用javah生成C或C++的头文件,可是可能会遇到: 错误: 无法訪问android.support.v7.app.AppCo ...
- 通过GhostDoc实现自定义方法概要(summary)
首先是下载GhostDoc 来自园友:http://www.cnblogs.com/VAllen/p/GhostDocPro49.html 修改模板 安装好后,修改下模板,工具>GhostDoc ...
- jquery源码学习笔记三:jQuery工厂剖析
jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...
- intellij IDEA破解
方法1 填入下面的license server: http://intellij.mandroid.cn/ http://idea.imsxm.com/ http://idea.iteblog.com ...
- 高清摄像头MIPI CSI2接口浅解【转】
本文转载自:http://blog.csdn.net/u012075739/article/details/44672435 MIPI摄像头常见于手机.平板中,支持500万像素以上高清分辨率.它的全称 ...
- cassandra删除所有数据,重置为初始状态——删除<data dir>/data/* <data dir>/commitlog/* <data dir>/saved_caches/* 重启cassandra即可
Are you looking for a method other than drop keyspace? Okay based on your clarification... I would s ...