6.3(java学习笔记)缓冲流
一、缓冲流
使用缓冲流后的输入输出流会先存储到缓冲区,等缓冲区满后一次性将缓冲区中的数据写入或取出。
避免程序频繁的和文件直接操作,这样操作有利于提高读写效率。
缓冲流是构建在输入输出流之上的,可以理解为是对基本输入输出流的增强和扩展,但其根本是建立在输入输出流之上的。
1.字节缓冲流
1.1字节缓冲流类
BufferInputStream
BufferOutputStream
1.2.构造方法:
传递参数为输入、输出流对象。
BufferedInputStream(InputStream in)//构造方法,创建一个缓冲流,保存其参数(输入流),供后续使用
BufferedInputStream(InputStream in, int size)//创建一个缓冲流,size为设置缓冲区大小
BufferedOutputStream(OutputStream out)//创建输出缓冲流
BufferedOutputStream(OutputStream out, int size)//size为缓冲区大小
1.3.例子
给输入输出流加上缓冲流后,其基本功能和方法并没有改变,只是改变了读写所采取的策略,基本方法和操作方式没有发生变化。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Flushable;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer; public class Test {
public static void main(String[] args){
String pathW = "F:\\依风\\Desktop\\writer.txt";
String pathR = "F:\\依风\\Desktop\\reader.txt";//此处的reader.txt中要有数据 File fr = new File(pathR);
File fw = new File(pathW);
InputStream r = null;
OutputStream w = null;
InputStream bufferR = null;
OutputStream bufferW = null;
try {
int c = 0;
r = new FileInputStream(fr);
w = new FileOutputStream(fw);
bufferR = new BufferedInputStream(r);//将输入输出流加上缓冲
bufferW = new BufferedOutputStream(w);
try {
while(-1 != (c = bufferR.read())){//读一个字符
bufferW.write(c);
System.out.print((char)c);
}
bufferW.flush();//将缓冲区剩余数据写入 } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
bufferW.close();//关闭资源
bufferR.close();
r.close();
w.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
}
运行结果:
BufferedStream
2.字符缓冲流
2.1字符缓冲流类
BufferedWriter
BufferedReader
2.2构造方法
BufferedWriter(Writer out)
BufferedWriter(Writer out, int sz)
创建字符缓冲流,sz为指定缓冲区大小。
BufferedReader(Reader in)
BufferedReader(Reader in, int sz)
2.3新增方法
BufferedWtriter:void newLine()//写入行分隔符,简单的说就是加上回车换行
BufferedReader:String readLine()//读取一行,以字符串形式返回读取内容。如果已到末尾返回null
有一点需要注意,这里的新增方法在它们的父类(Wtriter,Reader)中并没有,所以需要使用这些方法时不能发生多态。
3.4例子
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Flushable;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer; public class Test {
public static void main(String[] args){
String pathW = "F:\\依风\\Desktop\\writer.txt";
String pathR = "F:\\依风\\Desktop\\reader.txt";//该文件必须已有数据
/*此时该文件中的数据:
*BufferedStream
*BufferReader
*BufferWriter
*
*/ File fr = new File(pathR);
File fw = new File(pathW);
Reader r = null;
Writer w = null;
BufferedReader bufferR = null;//此处使用的BufferedReader、BufferedWtriter中独有的方法
BufferedWriter bufferW = null;//故不能发生多态,所有不能使用Reader或Writer
try {
String str;
r = new FileReader(fr);
w = new FileWriter(fw);
bufferR = new BufferedReader(r);//将输入输出流加上缓冲
bufferW = new BufferedWriter(w);
try {
while(null != (str = bufferR.readLine())){//读一行
bufferW.write(str);//将读取的字符串写入
bufferW.newLine();//写入换行分隔符,即回车
System.out.println(str);//输出读取和写入的数据
}
bufferW.flush();//将缓冲区剩余数据写入 } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
bufferW.close();//关闭资源
bufferR.close();
r.close();
w.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
}
运行结果:
BufferedStream
BufferReader
BufferWriter
6.3(java学习笔记)缓冲流的更多相关文章
- java 学习笔记之 流、文件的操作
ava 学习笔记之 流.文件的操作 对于一些基础的知识,这里不再过多的解释, 简单的文件查询过滤操作 package com.wfu.ch08; import java.io.File; import ...
- Java 学习笔记 IO流与File操作
可能你只想简单的使用,暂时不想了解太多的知识,那么请看这里,了解一下如何读文件,写文件 读文件示例代码 File file = new File("D:\\test\\t.txt" ...
- java学习笔记——IO流部分
IO流常用的有:字符流.字节流.缓冲流.序列化.RandomAccessFile类等,以上列出的都是开发中比较常用的. 1.字节流: 字节流包含:FileInputStream/FileOutputS ...
- java学习笔记--IO流
第十二章大纲: I/O input/output 输入/输出 一.创建文件,借助File类来实现 file.createNewFile() : 创建文件 file.exists() : 判断文件是否存 ...
- java学习笔记 --- IO流小结
IO流 |--字节流 |--字节输入流 InputStream int read():一次读取一个字节 int read(byte[] bys):一次读取一个字节数 ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- java学习笔记(7)——I/O流
一.File类 File(File parent, String child); File(Stirng filename); ------------------------------------ ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145330第十周《Java学习笔记》
20145330第十周<Java学习笔记> 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就 ...
- 20145330第六周《Java学习笔记》
20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...
随机推荐
- java的多构造函数的处理方式
/** * */ package P; import java.awt.List; import java.lang.reflect.Array; import java.util.ArrayList ...
- 深入探索 高效的Java异常处理框架
转载自:http://www.sunwei.org/archives/196 摘要:本文从Java异常最基本的概念.语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Sprin ...
- 串的模式匹配算法(求子串位置的定位函数Index(S,T,pos))
串的模式匹配的一般方法如算法4.5(在bo4-1.cpp 中)所示:由主串S 的第pos 个字 符起,检验是否存在子串T.首先令i 等于 pos(i 为S 中当前待比较字符的位序),j 等于 1(j ...
- Cannot read property 'resetFields' of undefined 问题及引申
问题描述: 使用element开发我的后台系统,编辑和新增使用了同一个弹出框<el-dialog><el-form></el-form></el-dialog ...
- [洛谷P1074] 靶形数独
洛谷题目链接:靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博 ...
- jsp和servlet之间传数据
一.jsp与java文件传递数据可以使用Servlet类来传递,jsp将数据存入到request对象中,Servlet类获取这个request对象,并将数据取出. 示例代码如下: JSP代码: < ...
- 矩阵快速幂&T1
T1 知识储备 在写这一题之前,我们首先要了解矩阵乘法(我就是因为不懂弄了好久...) 矩阵的运算()-----(信息学奥赛一本通之提高篇) 矩阵的加法减法是十分简单的,就是把2个矩阵上对应的位置相加 ...
- javascript的阻塞机制
javascript的阻塞机制 浏览器在执行javascript代码时,不能同时做其它事情,当遇到javascript时,浏览器会下载js文件,解析并执行该文件,而在这期间页面的渲染是完全被阻塞的,因 ...
- 如何开启SUSE Linux的SSH
1. 使用命令行停止防火墙 /etc/init.d/SuSEfirewall2_init stop /etc/init.d/SuSEfirewall2_setup stop 2. 修改 vi /etc ...
- 函数:module_put ( )【转】
转自:http://book.2cto.com/201307/27049.html 文件包含: #include <linux/module.h> 函数定义: 函数在内核源码中的位置:li ...