IO里面的缓冲流分,字节缓冲流和字符缓冲流。
字节缓冲流:new BufferedInputStream( new FileInputStream(srcFile) )
new BufferedOutputStream( new FileOutputStream(destFile) );
字节缓冲流没有别的新加的方法,用的时候最好加上,据说加上了性能好一些。
字符缓冲流:bufferedReader = new BufferedReader(reader);
bufferedWriter = new BufferedWriter(writer);
字符缓冲流,reader 加了 readLine() 方法
writer 加了 newLine() 方法
一起来看看代码吧!
1.字节缓冲流实现复制文件
/**
* 拷贝文件
* @param srcFile 源文件的File对象
* @param destFile 目标文件的File对象
*/
public static void copyFile(File srcFile, File destFile) {
BufferedInputStream is = null;
BufferedOutputStream os = null;
try {
// 加入缓冲流,因为可能有新加的方法,所以此处不使用 多态,直接实例化该对象
is = new BufferedInputStream( new FileInputStream(srcFile) );
os = new BufferedOutputStream( new FileOutputStream(destFile) );
byte [] b = new byte[2048];
int len = 0;
while( -1 != (len = is.read(b)) ) {
// 写出
os.write(b, 0, len);
}
os.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.字符缓冲流实现读写文件(存字符文件)
public static void copyFile(File srcFile, File destFile) {
try {
Reader reader = new FileReader(srcFile);
Writer writer = new FileWriter(destFile);
/**
* 建立缓冲流
*/
BufferedReader bufferedReader = new BufferedReader(reader);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
String line = null;
while( null != (line = bufferedReader.readLine()) ) {
System.out.println( line );
bufferedWriter.write(line);
// 新加一行,和 write("\r\n") 等效
bufferedWriter.newLine();
}
bufferedWriter.flush();
//关闭流...
} catch (Exception e) {
e.printStackTrace();
}
}