JAVA中文件夹的复制和文件的遍历

文件夹的复制和文件的遍历主要原理是:先遍历源文件夹里面的所有文件和文件夹,并保存到一个文件路径数组中,然后循环这个数组,如果是文件就用FileInputStream和FileOutputStream类来实现复制功能,如果是文件夹,则用递归方法递归遍历里面的文件和文件夹,

主要的实现方法是用File类的API来遍历要操作文件和文件夹,



具体怎么用,我写了一个小测试代码级大家看吧,我再在代码里面写一点注释,告诉大家怎么用就好了
代码如下:
//
import java.io.*;

class FileMove
{
        public static void main(String[] args)
        {
                try{
                //传入两个文件夹路径,其中在Windows中使用的分隔符是"\\"
                CopyFile("D:\\5555","D:\\1234");
                }
                catch(Exception ex){}
                System.out.println("Copy File is over!");
        
        }
        
        //复制文件夹的方法,开始的时候是两个文件夹
        public static void CopyFile(String source,String destin) throws Exception //在这里直接抛出各种异常,就不一一处理了
        {
                File path1=new File(source);
                File path2=new File(destin);
                
                //如果源目录不存在,那就不用复制了,
                if(path1.exists())
                {
                        //Create destination folder,如果目标目录不存在,就创建目标目录,因为没有目录文件复制不过去的
                        if(!path2.exists())
                        {
                                path2.mkdirs();
                        }
                        
                        //取得源目录下面的所有文件和文件夹
                        File[] items=path1.listFiles();
                        FileInputStream fis=null;
                        FileOutputStream fos=null;
                        
                        //取得所有文件和文件夹之后,遍历处理,如果是文件,就复制文件,如果是文件夹,则递归文件夹下面的文件和文件夹
                        for(File item:items)
                        {
                                //如果是文件才进行复制
                                if(item.isFile())
                                {
                                    //输入输出流的两个常用构造函数,其中在用来了一个字段File.separator,先用输入流读取文件,然后用输出流写文件到目标位置,完成复制功能
                                        fis=new FileInputStream(item);
                                        fos=new FileOutputStream(path2+File.separator+item.getName());
                                        byte[] b=new byte[1024];
                                        for(int i=0;(i=fis.read(b))!=-1;)
                                        {
                                                fos.write(b,0,i);
                                                fos.flush();
                                        }
                                        
                                        //close the Stream关闭资源啊,什么异常处理的就不写,自己补上吧
                                        fos.close();
                                        fis.close();                                        
                                
                                }
                                //如果是文件夹,递归文件夹
                                else
                                {
                                        CopyFile(item.getPath(),path2+File.separator+item.getName());
                                }
                        }                        
                }
                else
                {
                        System.out.println("source path:"+source+" is not exists!");
                }                
        }
}
//

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值