一、字节型
/**
* 缓冲流(字节型)实现非文本文件的复制
*/
public class test30 {
public static void main(String[] args){
//1、造文件
File file = new File("流弊.jpg");
File file2 = new File("流弊3.jpg");
//2、造流
//2.1、造节点流
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
//2.2、造缓冲流
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
fileInputStream = new FileInputStream(file);
fileOutputStream = new FileOutputStream(file2);
bufferedInputStream = new BufferedInputStream(fileInputStream);
bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
//3、复制的细节:读取、写入
byte[] cbuf = new byte[5];
int len;
while((len = bufferedInputStream.read(cbuf)) != -1){
bufferedOutputStream.write(cbuf,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//4、资源的关闭
//要求:先关外边的流,再关里边的流
try {
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
bufferedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
//说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可以省略。
// fileInputStream.close();
// fileOutputStream.close();
}
}
}
二、字符型
/**
* 缓冲流(字符型)实现文本文件的复制
*/
public class test31 {
public static void main(String[] args) {
//1、
File file = new File("hello.txt");
File file1 = new File("hello3.txt");
//2、造流
//2.1、造节点流
FileReader fileReader = null;
FileWriter fileWriter = null;
//2.2、造缓冲流
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
fileReader = new FileReader(file);
fileWriter = new FileWriter(file1);
bufferedReader = new BufferedReader(fileReader);
bufferedWriter = new BufferedWriter(fileWriter);
//3、复制的细节:读取、写入
//方式一、使用char[]数组
// char[] cubf = new char[1024];
// int len;
// while((len = bufferedReader.read(cubf)) != -1){
// bufferedWriter.write(cubf,0,len);
// }
//方式二、使用String
String data;
while((data = bufferedReader.readLine()) != null){
// bufferedWriter.write(data + "\n");
bufferedWriter.write(data);
//提供换行的操作
bufferedWriter.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//4、资源的关闭
//要求:先关外边的流,再关里边的流
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
//说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可以省略。
// fileReader.close();
// fileReader.close();
}
}
}