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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李涛涛 中级黑马   /  2012-3-1 11:36  /  2099 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果 我想将一个文件夹下面所有内容拷贝到另一个盘符上,java 编程的思路是什么?

3 个回复

倒序浏览
这里就需要用到递归的思想
   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");
    }
    }

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
我说一下我的思路,实现代码相比楼主可搜集不少,楼上功能实现就很不错。
功能可理解为,把一文件夹下所有内容考到另一位置,不必在意是否换盘符,在哪都是一个位置,不会影响到代码。
首先当然是判断目标位置是否存在,若存在则开始复制,若不存在则创建路径。
然后创建一函数getsSubcatalog(Stirng path),可遍历给定目录下所有文件,并判断所的文件是目录或文件,若是目录则把本目录作为参数传递给getsSubcatalog(Stirng path)(设计文件目录读取一般都要用到递归),若是文件则复制。说起来简单,可能实现起来会遇到不少麻烦。

评分

参与人数 2技术分 +2 黑马币 +2 收起 理由
admin + 2
李涛涛 + 2

查看全部评分

回复 使用道具 举报
递归
思路就是如上所说,便利文件夹下所以目录,如果还是文件夹就又传给自己,反复........到底了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马