黑马程序员技术交流社区

标题: 拷贝问题 [打印本页]

作者: 李涛涛    时间: 2012-3-1 11:36
标题: 拷贝问题
如果 我想将一个文件夹下面所有内容拷贝到另一个盘符上,java 编程的思路是什么?
作者: 田啸    时间: 2012-3-1 12:46
这里就需要用到递归的思想
   java删除和拷贝文件递归实现方法:程序自己调用自己
    实现文件的删除和拷贝,代码如下:
    package com.viita;
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    public class Dptest {
    //删除制定文件夹的所有文件及根文件夹
    public void deleteFile(String path) {
    // TODO Auto-generated method stub
    File f = new File(path);
    if(f.isDirectory())
    {
    File[] file = f.listFiles();
    for (File file2 : file) {
    this.deleteFile(file2.toString());
    file2.delete();
    }
    }else
    {
    f.delete();
    }
    f.delete();
    }   //拷贝整个文件夹的方法
    public void copyFiles(String path1, String path2) throws Exception {
       File file = new File(path1);
    if(file.isDirectory())
    {
    File f = new File(path2);
    if(!f.exists()) f.mkdir();
    File[] files = file.listFiles();
    for (File file2 : files) {
    //System.out.println(file2.toString()+"-----"+path2+"/"+file2.getName());
    copyFiles(file2.toString(),path2+"/"+file2.getName());
    }
    }else
    {
    copy(path1,path2);
    }
    }
    //拷贝单个文件的方法
    public void copy(String path1,String path2) throws IOException {
    // TODO Auto-generated method stub
    DataInputStream in = new DataInputStream(
    new BufferedInputStream(
    new FileInputStream(path1)));
    byte[] date = new byte[in.available()];
    in.read(date);
    DataOutputStream out = new DataOutputStream(
    new BufferedOutputStream(
    new FileOutputStream(path2)));
    out.write(date);
    in.close();
    out.close();
    }
    public static void main(String[] args) throws Exception {
    Dptest dp = new Dptest();
    dp.deleteFile("c:/wmpub");
    //        dp.copyFiles("c:/新建文件夹", "c:/xiao");
    }
    }

作者: dangfei    时间: 2012-3-1 13:22
我说一下我的思路,实现代码相比楼主可搜集不少,楼上功能实现就很不错。
功能可理解为,把一文件夹下所有内容考到另一位置,不必在意是否换盘符,在哪都是一个位置,不会影响到代码。
首先当然是判断目标位置是否存在,若存在则开始复制,若不存在则创建路径。
然后创建一函数getsSubcatalog(Stirng path),可遍历给定目录下所有文件,并判断所的文件是目录或文件,若是目录则把本目录作为参数传递给getsSubcatalog(Stirng path)(设计文件目录读取一般都要用到递归),若是文件则复制。说起来简单,可能实现起来会遇到不少麻烦。
作者: 欧阳博    时间: 2012-3-1 15:39
递归
思路就是如上所说,便利文件夹下所以目录,如果还是文件夹就又传给自己,反复........到底了,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2