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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王震阳老师   /  2014-4-30 10:34  /  46975 人查看  /  602 人回复  /   4 人收藏 转载请遵从CC协议 禁止商业使用本文

速来领题。
回复 使用道具 举报
本帖最后由 vincentgood 于 2014-5-17 21:35 编辑

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

public class B {
        /**
         * 复制单个文件
         *
         * @param oldPath
         *            String 原文件路径 如:c:/fqf.txt
         * @param newPath
         *            String 复制后路径 如:f:/fqf.txt
         * @return boolean
         */
        public void copyFile(String oldPath, String newPath) {
                try {
                        int bytesum = 0;
                        int byteread = 0;
                        File oldfile = new File(oldPath);
                        if (oldfile.exists()) { // 文件存在时
                                InputStream inStream = new FileInputStream(oldPath); // 读入原文件
                                FileOutputStream fs = new FileOutputStream(newPath);
                                byte[] buffer = new byte[1444];
                                int length;
                                while ((byteread = inStream.read(buffer)) != -1) {
                                        bytesum += byteread; // 字节数 文件大小
                                        System.out.println(bytesum);
                                        fs.write(buffer, 0, byteread);
                                }
                                inStream.close();
                        }
                } catch (Exception e) {
                        System.out.println("复制单个文件操作出错");
                        e.printStackTrace();
                }
        }

        /**
         * 复制整个文件夹内容
         *
         * @param oldPath
         *            String 原文件路径 如:c:/fqf
         * @param newPath
         *            String 复制后路径 如:f:/fqf/ff
         * @return boolean
         */
        public void copyFolder(String oldPath, String newPath) {
                try {
                        (new File(newPath)).mkdirs(); // 如果文件夹不存在 则建立新文件夹
                        File a = new File(oldPath);
                        String[] file = a.list();
                        File temp = null;
                        for (int i = 0; i < file.length; i++) {
                                if (oldPath.endsWith(File.separator)) {
                                        temp = new File(oldPath + file);
                                } else {
                                        temp = new File(oldPath + File.separator + file);
                                }
                                if (temp.isFile()) {
                                        FileInputStream input = new FileInputStream(temp);
                                        FileOutputStream output = new FileOutputStream(newPath
                                                        + "/" + (temp.getName()).toString());
                                        byte[] b = new byte[1024 * 5];
                                        int len;
                                        while ((len = input.read(b)) != -1) {
                                                output.write(b, 0, len);
                                        }
                                        output.flush();
                                        output.close();
                                        input.close();
                                }
                                if (temp.isDirectory()) {// 如果是子文件夹
                                        copyFolder(oldPath + "/" + file, newPath + "/" + file);
                                }
                        }
                } catch (Exception e) {
                        System.out.println("复制整个文件夹内容操作出错");
                        e.printStackTrace();
                }
        }

        public static void main(String args[]) {
                B bp = new B();
                bp.copyFolder("C:\\dell", "D:\\dell");
        }
}

回复 使用道具 举报
右手的依恋 来自手机 中级黑马 2014-5-18 09:59:24
423#
正在学习,努力中,,,,
回复 使用道具 举报
qfch 中级黑马 2014-5-18 16:59:44
424#
学学看看
回复 使用道具 举报
正在学习中,想提高……
回复 使用道具 举报
  1. public static void copyFolder(String oldPath, String newPath) {

  2.                 try {
  3.                         (new File(newPath)).mkdirs(); // 如果文件夹不存在 则建立新文件夹
  4.                         File a = new File(oldPath);
  5.                         String[] file = a.list();
  6.                         File temp = null;
  7.                         for (int i = 0; i < file.length; i++) {

  8.                                 if (oldPath.endsWith(File.separator)) {
  9.                                         temp = new File(oldPath + file[i]);
  10.                                 } else {
  11.                                         temp = new File(oldPath + File.separator + file[i]);
  12.                                 }

  13.                                 if (temp.isFile()) {
  14.                                         FileInputStream input = new FileInputStream(temp);
  15.                                         FileOutputStream output = new FileOutputStream(newPath
  16.                                                         + "/" + (temp.getName()).toString());
  17.                                         byte[] b = new byte[1024 * 5];
  18.                                         int len;
  19.                                         while ((len = input.read(b)) != -1) {
  20.                                                 output.write(b, 0, len);
  21.                                         }
  22.                                         output.flush();
  23.                                         output.close();
  24.                                         input.close();
  25.                                 }
  26.                                 if (temp.isDirectory()) {// 如果是子文件夹
  27.                                         copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
  28.                                 }
  29.                         }

  30.                 } catch (Exception e) {
  31.                         System.out.println("复制整个文件夹内容操作出错");
  32.                         e.printStackTrace();

  33.                 }

  34.         }
复制代码


回复 使用道具 举报
学习学习看看看看~~
回复 使用道具 举报
看看这个是什么东东。
回复 使用道具 举报
lvc 中级黑马 2014-5-19 04:41:01
429#
看看题再试一试
回复 使用道具 举报
诱惑好大哦
回复 使用道具 举报
首先看看吧。再说吧!
回复 使用道具 举报
来的比较迟,不知道还是否有分呢?
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
*
* @author Administrator
*
* 将C盘指定的一个文件夹(包含文件夹内的所有文件夹和所有文件,多层嵌套)复制到D盘中
*/
public class CopyFile {
  
  private static String folder;

  public static void main(String[] args) {
    //原文件路径
    String path = "D:/test";
    String[] strTemp = path.split("/");
    folder = strTemp[strTemp.length - 1];
   
    //复制到文件的路径
    String copyPath = "E:";
    //创建一个List集合,用于存放文件
    List<MyFile> fileList = new ArrayList<MyFile>();
    File file = new File(path);
    //获取指定路径的文件或路径
    File[] files = file.listFiles();
    fileNameAndPath(files,fileList);
   
    //复制文件
    fileCopy(fileList,copyPath);
  }

  /**
   * 将文件 复制到指定的路径下
   * @param fileList
   * @param copyPath
   */
  private static void fileCopy(List<MyFile> fileList, String copyPath) {
   
    for (MyFile myFile : fileList) {
      String path = myFile.getOldPath() + File.separator + myFile.getName();
      try {
        //创建文件字节输入流
        FileInputStream inputStream = new FileInputStream(path);
        
        String newPath = copyPath + File.separator + myFile.getNewPath();
        File file = new File(newPath);
        if(!file.exists()){
          //首先创建文件夹
          file.mkdirs();
        }
        //再创建文件
        String url = copyPath + File.separator + myFile.getNewPath() + File.separator + myFile.getName();
        File newFile = new File(url);
        if(!newFile.exists()){
          newFile.createNewFile();
        }
        //创建文件字节输出流
        FileOutputStream outputStream = new FileOutputStream(url);
        int len = 0;
        //创建缓存数组
        byte[] buff = new byte[1024];
        while((len = inputStream.read(buff)) != -1){
          outputStream.write(buff, 0, len);
        }
        //关闭流对象
        outputStream.close();
        inputStream.close();
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
   
  }

  /**
   * 将文件的路径和文件名称存放List集合当中
   * @param file
   * @param fileList
   */
  private static void fileNameAndPath(File[] file, List<MyFile> fileList) {
    for (int i = 0; i < file.length; i++) {
      if(file[i].isFile()){
        //是文件
        String temp = file[i].getParent();
        //获取第一次出现文件夹folder的下标索引位置
        int index = temp.indexOf(folder);
        fileList.add(new MyFile(temp,temp.substring(index),file[i].getName()));
      }
      if(file[i].isDirectory()){
        File[] tempFile = file[i].listFiles();
        fileNameAndPath(tempFile,fileList);
      }
    }
  }
  
}

/**
*
* @author Administrator
* 用于存放文件信息
*/
class MyFile{
  
  private String oldPath; //原来的文件路径
  private String newPath; //复制后的文件路径
  private String name; //文件名称
  
  public MyFile(String oldPath, String newPath, String name) {
    this.oldPath = oldPath;
    this.newPath = newPath;
    this.name = name;
  }
  
  public String getOldPath() {
    return oldPath;
  }
  public void setOldPath(String oldPath) {
    this.oldPath = oldPath;
  }
  public String getNewPath() {
    return newPath;
  }
  public void setNewPath(String newPath) {
    this.newPath = newPath;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  
}
回复 使用道具 举报
More 中级黑马 2014-5-20 12:44:37
433#
做题做题
回复 使用道具 举报
坚决不放弃获得每一技术分的机会!!
回复 使用道具 举报
目要求:回复可见,快来领题吧。
回复 使用道具 举报
请教一下·回帖怎么隐藏啊?
回复 使用道具 举报
游客,如果您要查看本帖隐藏内容请回复
回复 使用道具 举报
题目做完了,不知道还能不能送分啊

FileCopy.zip

851 Bytes, 阅读权限: 100, 下载次数: 1

评分

参与人数 1技术分 +4 收起 理由
王震阳老师 + 4 鼓励一下

查看全部评分

回复 使用道具 举报
好像不太会
回复 使用道具 举报
看看看看~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马