- 我在写一遍吧,写了好多遍了,这个复制文件夹和文件是需要通过File类的一个构造函数来完成的File(File dest,String filenamae)
- 代码如下:
- import java.io.*;
- class CopyFiles
- {
- private static FileInputStream fis;
- private static FileOutputStream fos;
- public static void main(String[] args)
- {
-
- //源文件夹
- File dir = new File("C:\\java");
- //在F盘创建java文件夹
- File dest = new File("F:\\",dir.getName());
- //这一步很重要,目标文件路径不存就创建,否则会报异常
- if(!dest.exists())
- dest.mkdir();
- copy(dir,dest);
- }
- public static void copy(File dir,File dest){
- //列出文件夹dir下的所有目录包括文件
- File[] files = dir.listFiles();
- for(File file : files){
- //在目标路径下先创建同名文件或者文件夹
- File newDest = new File(dest,file.getName());//这是File类的构造函数
- if(file.isDirectory()){
- //这一步很重要,目标文件路径不存就创建,否则会报异常
- if(!newDest.exists())
- newDest.mkdir();
- copy(file,newDest);
- }else{
- try{
- //如果是个文件就读写
- fis = new FileInputStream(file);
- fos = new FileOutputStream(newDest);
- byte[] buf = new byte[1024];
- int len = 0;
- while((len=fis.read(buf))!=-1){
- fos.write(buf,0,len);
- fos.flush();
- }
- }catch(IOException e){
- e.printStackTrace();
- }finally{
- if(fis!=null){
- try{
- fis.close();
- }catch(IOException e){
- e.printStackTrace();
- }
- }
- if(fos!=null){
- try{
- fos.close();
- }catch(IOException e){
- e.printStackTrace();
- }
- }
- }
- }
- }
- }
- }
复制代码 |