bufferedInputStream和bufferedOutputStream是对字节的缓冲提高读写的操作。打个比喻,以前搬家是一字节字节的搬,称为蚂蚁搬家。然后我们用汽车搬1k的搬,很慢。然后我们用更大的汽车搬,我们只需要1k或8k的打包,当打包到8个包时,然后司机一下都搬走,这样是不用频繁的读写硬盘了,所以性能就有了提升。
is = new BufferedInputStream(new FileInputStream(src)) ;
os = new BufferedOutputStream(new FileOutStream(src));
以下完整代码
public class IOtest01 {
public static void main(String[] args) throws FileNotFoundException {
//1.创建源
File src = new File("D:/WorkSpace/IO/src/io.txt");
InputStream is = null;
//2.选择流
try {
is = new BufferedInputStream(new FileInputStream(src)) ;
//3.操作(读取)
int temp;
try {
while ((temp=is.read())!=-1) {//结尾的结果等于-1
System.out.print((char)temp);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}finally{
//4.释放资源
try {
if (null!=is) { //如果 is没有就不存在释放
is.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
字符缓冲流
BufferedReader&BufferedWriter的原理是一样的,上面的是提高字节性能,这是提高字符的性能。
字符输出流 加入 缓冲流 代码
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
/*
* 四个步骤:分段读取
* 1.创建源 选择房子
* 2.选择流 选择搬家公司
* 3.操作 选择用什么搬
* 4.释放资源 打发搬家公司
*/
public class IOtest02 {
public static void main(String[] args) {
//1.创建源
File src = new File("D:/WorkSpace/IO/src/io.txt");
BufferedReader reader = null;
//2.选择流
try {
reader = new BufferedReader(new FileReader(src));
//3.操作(逐行读取)
String line =null;
try {
while ((line=reader.readLine())!=null) {//readLine 逐行读取
//字节数组-->字符串
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//4.释放资源
try {
if (null!=reader) { //如果 is没有就不存在释放
reader.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
字符输入 加入 缓冲流 代码
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/*
* 四个步骤:分段读取
* 1.创建源 选择房子
* 2.选择流 选择搬家公司
* 3.操作 选择用什么搬
* 4.释放资源 打发搬家公司
*/
public class BufferedTest04 {
public static void main(String[] args) throws IOException {
//1.创建源
File src = new File("src/test.txt");
//2.选择流
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(src)); //如果是true在原有的后面加,如果是flass测是替换原有的
//3.操作(写入)
writer.append(" IO is so easy");
writer.newLine(); //换行符
writer.append("纯洁小美男");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}