字节流复制文件:
* 使用FileInputStream和FileOutputStream复制文件
public class MyTest {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("fis.txt");//里面的内容是abc
FileOutputStream fos = new FileOutputStream("fos.txt");
byte[] bys = new byte[1024];
int len = 0;
while((len = fis.read(bys))!=-1){
fos.write(bys,0,len);
}
fis.close();
fos.close();
}
}
* 使用BufferedInputStream和BufferedOutputStream复制文件
public static void main(String[] args) throws Exception {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("fis.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("fos.txt"));
byte[] bys = new byte[1024];
int len =0;
while((len=bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bis.close();
bos.close();
}
字符流复制文件
* 使用字符输入流FileReader和FileWriter复制文件
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("fis.txt");
FileWriter fw = new FileWriter("fos.txt");
char[] chs=new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1){
fw.write(chs,0,len);
}
fr.close();
fw.close();
}
* 使用高效字符输入流BufferedReader和高效字符输出流BufferedWriter复制文件
* 方式一:
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("fis.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("fos.txt"));
char[] chs = new char[1024];
int len = 0;
while((len = br.read(chs))!=-1){
bw.write(chs,0,len);
bw.flush();
}
br.close();
bw.close();
}
* 方式二:
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("fis.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("fos.txt"));
String line= null;
while((line = br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
复制多级文件夹
package pack;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* 复制文件夹D:\\src下所有的内容到文件夹D:\\dest下
* @author fanshoujun
*
*/
public class MyTest {
public static void main(String[] args) throws Exception {
File srcFolder = new File("D:\\src");
File destFolder = new File("D:\\dest");
copyFolder(srcFolder,destFolder);
}
public static void copyFolder(File srcFolder,File destFolder) throws Exception{
File[] srcFolderFiles = srcFolder.listFiles();
for (File src : srcFolderFiles) {
String srcName = src.getName();
File dest = new File(destFolder,srcName);
if(src.isFile()){
copyFile(src, dest);
}else{
dest.mkdir();
copyFolder(src, dest);
}
}
}
public static void copyFile(File srcFile,File destFile) throws Exception{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
byte[] bys= new byte[1024];
int len = 0;
while((len = bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bis.close();
bos.close();
}
}