/**
* 完成文件拷贝,将e盘文件拷贝到d盘
* 1.创建文件的输入流,将文件读入到程序
* 2.创建文件的输出流,将读取的文件写入到指定的文件
*/
public class FileCopy {
public static void main(String[] args) {
String srcFilePath = "e:\\图片素材\\img.jpg";//要拷贝的文件路径
String destFilePath = "d:\\img.jpg";//拷贝的文件存放的路径
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(srcFilePath);
fileOutputStream = new FileOutputStream(destFilePath);
byte[] buf = new byte[1024];
int readLength = 0;
while ((readLength = fileInputStream.read(buf)) != -1){
//边读取边写入
fileOutputStream.write(buf,0,readLength);//一定要使用这个方法,否则可能复制的图片不能打开
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fileInputStream != null) {
fileInputStream.close();
}
if (fileOutputStream != null) {
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
使用BufferedReader和BufferedWriter来复制文件
/**
* BufferedReader和BufferedWriter是按照字符来操作
* 不要去操作二进制文件(音频,视频,doc,pdf等等),会造成文件损坏
*/
public class BufferedCopy_ {
public static void main(String[] args) {
String srcFilePath = "e:\\story.txt";
String destFilePath = "e:\\story2.txt";
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
String line;
try {
bufferedReader = new BufferedReader(new FileReader(srcFilePath));
bufferedWriter = new BufferedWriter(new FileWriter(destFilePath));
while ((line = bufferedReader.readLine()) != null){
bufferedWriter.write(line);//每读取一行就写入
bufferedWriter.newLine();//插入换行
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader != null){
bufferedReader.close();
}
if (bufferedWriter != null){
bufferedWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
BufferedInputStream和BufferedOutputStream可以完成二进制文件拷贝
/**
* BufferedInputStream和BufferedOutputStream可以完成二进制文件拷贝
*/
public class BufferedCopy_02 {
public static void main(String[] args) {
String srcFilePath = "e:\\图片素材\\img.jpg";
String destFilePath = "e:\\img2.jpg";
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream(srcFilePath));
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destFilePath));
byte[] bytes = new byte[1024];
int readLen = 0;
while ((readLen = bufferedInputStream.read(bytes)) != -1){
bufferedOutputStream.write(bytes,0,readLen);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedInputStream != null){
bufferedInputStream.close();
}
if (bufferedOutputStream != null){
bufferedOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}