字符的复制
package file.Buffered;
import java.io.*;
//BufferedReader和BufferedWriter 是安装字符操作
//不要去操作二进制文件,可能造成文件损坏
/*
* 二进制文件是以字节为单位进行读写的文件,它包含了任意类型的数据,包括图片、音频、视频
* 等非文本数据。在处理二进制文件时,可以使用字节流(InputStream和OutputStream)来读写数据。(声音视频,word,excel,ppt文件等)
*
*文本文件是以字符为单位进行读写的文件,它包含了文本数据,通常使用ASCII或Unicode编码表示字符。
* 在处理文本文件时,可以使用字符流(Reader和Writer)来读写数据。
*/
public class BufferedCopy {
public static void main(String[] args) {
String sourcePath = "d:\\news.txt";
String destPath ="d:\\destnews.txt";
BufferedReader br =null;
BufferedWriter bw = null;
String line;//按行读取
try {
br = new BufferedReader(new FileReader(sourcePath));
bw = new BufferedWriter(new FileWriter(destPath));
while((line = br.readLine()) != null){//判断是否为空,如不为空则继续读入
bw.write(line);//每读取一行就插入一行
bw.newLine();//插入换行符
}
System.out.println("拷贝完成");
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
//关闭流
try {
if(br != null){
br.close();
}
if(bw != null){
bw.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
字节的复制
package file.Buffered;
import java.io.*;
public class BufferedCopy02 {
public static void main(String[] args) {
String spath = "d:\\PP.jpg";
String dpath = "d:\\dPP.jpg";
BufferedInputStream bi = null;
BufferedOutputStream bo = null;
try {
bi = new BufferedInputStream(new FileInputStream(spath));
bo = new BufferedOutputStream(new FileOutputStream(dpath));
byte[] buff = new byte[1024];
int readln = 0;
while((readln = bi.read(buff))!= -1){//返回-1,文件读取完毕
bo.write(buff,0,readln);
}
System.out.println("文件拷贝成功");
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if(bi != null){
bi.close();
}
if(bo != null){
bo.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}