A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 在学野马 中级黑马   /  2014-10-4 10:34  /  1206 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 在学野马 于 2014-10-4 12:56 编辑

怎样将一个指定路径下的包含普通文件的文件夹一块复制到其他路径

5 个回复

倒序浏览
public static void main(String[] args) throws Exception{
                File fileFrom =new File("E:\\testfrom");
                File fileTo = new File("E:\\testto");
                copyFiles(fileFrom,fileTo);
                }
       
        public static void copyFiles(File from,File to) throws Exception{
                if(from.isDirectory()){
                        FileInputStream fis= null;
                        FileOutputStream fos =null;
                        File[] files = from.listFiles();
                        for(File file:files){
                                String filename = to+"\\"+file.getName();
                                fis = new FileInputStream(file);
                                fos = new FileOutputStream(filename);
                                byte[] buf = new byte[1024];
                                int len = 0;
                                while((len=fis.read(buf))!=-1){
                                        fos.write(buf, 0, len);
                                }
                                fos.close();
                                fis.close();
                        }
                }
        }

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
〆_、Wali 发表于 2014-10-4 12:28
public static void main(String[] args) throws Exception{
                File fileFrom =new File("E:\\testfrom");
...

to那个文件夹怎么可以让系统自己新建
回复 使用道具 举报
在学野马 发表于 2014-10-4 13:04
to那个文件夹怎么可以让系统自己新建

复制的目的路径不是自己定义的吗?将路径写好后,在调用FileOutputStream(path)时系统就会自动建立那个目标文件夹了!
回复 使用道具 举报
用递归来写,我刚写的不太简便但是功能实现了
package com.itheima;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Filecopypath {
         private static InputStream ips;
         private static OutputStream ops;
        public static void main(String[] args) throws FileNotFoundException {
                File fileyuan = new File("D:\\你字啊");
                File filemd = new File("D:\\新建文件夹 (2)");
                copy(fileyuan,filemd);
        }

        private static void copy(File fileyuan, File filemd) throws FileNotFoundException {
                // TODO Auto-generated method stub
                //把源中的所有文件路径记录下来
                File[] files = fileyuan.listFiles();
                        //遍历所有路径
                        for(int i=0; i<files.length;i++){
//                                /路径为目录就执行下面的递归
                                if(files[i].isDirectory()){
                                //        System.out.println(files[i]);
                                        int in = files[i].toString().lastIndexOf("\\");
                                        String name = files[i].toString().substring(in, files[i].toString().length());
                                       
                                        File f = new File(filemd+name);
                                        f.mkdir();
                                        System.out.println(f);
                                        copy(files[i],f);
                                }
                                //在判断一下路径不是目录那么就把该文件输出到目的里
                                if(!(files[i].isDirectory())){
                                        ips = new FileInputStream(files[i]);
                                       
                                        int in = files[i].toString().lastIndexOf("\\");
                                       
                                        String filename = files[i].toString().substring(in, files[i].toString().length());
                                       
                                        ops = new FileOutputStream(filemd+filename);
                                        byte[] by = new byte[1024];
                                        int len=0;
                                        try {
                                                while((len = ips.read(by))!=-1){
                                                        ops.write(by);
                                                        ops.flush();
                                                }
                                        } catch (IOException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                }
                        }
                        }
               
        }

}
回复 使用道具 举报
过来学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马