缓存流:
package BufferedStream;
import java.io.*;
/*
一、IO流的分类:
①:按流向不同:输入流、输出流(以程序<内存>为主体)
②:按数据类型不同:字节流、字符流(字符流用于操作文本文件:txt .java)(字节流用于操作非文本文件 .avi .jpg .mp3)
③:按角色不同:节点流、处理流
二、IO流的体系结构
抽象基类 节点流 缓冲流(处理流的一种)
InputStream FileInputStream BufferedInputStream
OutputStream FileOutputStream BufferedOutputStream
Reader FileReader BufferedReader
Writer FileWriter BufferedWriter
*/
public class BufferedStreamTest {
// 使用缓冲流完成非文本文件的复制
public void copyFile(String src,String dest){
BufferedInputStream bis= null;
BufferedOutputStream bos= null;
try {
//1、创建FileInputStream实例,同时打开指定文件
FileInputStream fis=new FileInputStream(src);
//2、创建FileOutputStream实例,同时打开指定文件
FileOutputStream fos=new FileOutputStream(dest);
//3、创建BufferedInputStream 包装对应的节点流,用于提高效率
bis = new BufferedInputStream(fis);
//4、创建BufferedOutputStream 包装对应的节点流,用于提高效率
bos = new BufferedOutputStream(fos);
//5、读取指定文件的内容
byte[] b=new byte[1024];
int len=0;
while ((len=bis.read(b))!=-1){
//6、将指定的内容写到目标地点去
bos.write(b,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//7、关闭流(只需要关闭缓存流,其底层会自动关闭节点流)手动关闭节点流的话就需要从下往上关闭
if (bis!=null){
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bos!=null){
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package BufferedStream;
import java.io.*;
/*
一、IO流的分类:
①:按流向不同:输入流、输出流(以程序<内存>为主体)
②:按数据类型不同:字节流、字符流(字符流用于操作文本文件:txt .java)(字节流用于操作非文本文件 .avi .jpg .mp3)
③:按角色不同:节点流、处理流
二、IO流的体系结构
抽象基类 节点流 缓冲流(处理流的一种)
InputStream FileInputStream BufferedInputStream
OutputStream FileOutputStream BufferedOutputStream
Reader FileReader BufferedReader
Writer FileWriter BufferedWriter
*/
public class BufferedStreamTest {
// 使用缓冲流完成非文本文件的复制
public void copyFile(String src,String dest){
BufferedInputStream bis= null;
BufferedOutputStream bos= null;
try {
//1、创建FileInputStream实例,同时打开指定文件
FileInputStream fis=new FileInputStream(src);
//2、创建FileOutputStream实例,同时打开指定文件
FileOutputStream fos=new FileOutputStream(dest);
//3、创建BufferedInputStream 包装对应的节点流,用于提高效率
bis = new BufferedInputStream(fis);
//4、创建BufferedOutputStream 包装对应的节点流,用于提高效率
bos = new BufferedOutputStream(fos);
//5、读取指定文件的内容
byte[] b=new byte[1024];
int len=0;
while ((len=bis.read(b))!=-1){
//6、将指定的内容写到目标地点去
bos.write(b,0,len);
/* bos.flush();//强制清空缓冲区 :解决数据丢失问题 但会影响性能*/
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//7、关闭流(只需要关闭缓存流,其底层会自动关闭节点流)手动关闭节点流的话就需要从下往上关闭
if (bis!=null){
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bos!=null){
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//使用缓冲区完成文本文件的复制
public void copyTextFile(String src,String dest){
BufferedReader br= null;
BufferedWriter bw= null;
try {
//1、创建FileReader实例,同时打开指定文件
FileReader fr=new FileReader(src);
//2、创建FileWriter实例,同时打开指定文件
FileWriter fw=new FileWriter(dest);
//3、创建BufferedReader 包装对应的节点流,用于提高效率
br = new BufferedReader(fr);
//4、创建BufferedWriter 包装对应的节点流,用于提高效率
bw = new BufferedWriter(fw);
//5、读取指定文件的内容
String str=null;
while ((str=br.readLine())!=null){
//6、将读取的内容写到目标地点去
/*bw.write(str+"\n");*/
bw.write(str);
bw.newLine();//换行
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//7、关闭流
if (br !=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bw !=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/*
//1、创建FileReader实例,同时打开指定文件
//2、创建FileWriter实例,同时打开指定文件
//3、创建BufferedReader 包装对应的节点流,用于提高效率
//4、创建BufferedWriter 包装对应的节点流,用于提高效率
//5、读取指定文件的内容
//6、将读取的内容写到目标地点去
//7、关闭流
*/
}
//readlLine():一次性读取一行的字符串