- package com.xuchang.test;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.Scanner;
- public class Test3 {
- /**
- *3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
- * @throws IOException
- */
- public static void main(String[] args) throws IOException {
- File dir1 = getFile();
- File dir2 = getFile();
- copyFiles(dir1,dir2);
- System.out.println("复制成功!");
- }
- /*定义getFile()方法
- * A.返回值类型File
- * B.参数列表
- * 1.创建键盘录入对象
- * 2.String line接受数据
- * 3.封装成File对象
- * 4.无限循环 判断是否是文件夹
- * 5.return file;
- * */
- public static File getFile() {
- Scanner sc = new Scanner(System.in);
-
- while(true) {
- System.out.println("请输入一个路径:");
- String line = sc.nextLine();
- File file = new File(line);
- if(!file.exists()) {
- System.out.println("路径不存在!");
- }else if(file.isFile()) {
- System.out.println("路径是文件");
- }else
- return file;
- }
- }
-
- /*定义copyFiles()方法
- * A.返回值类型void
- * B.参数列表File dir1.File dir2
- * 1.调用listFiles()方法得打该文件夹下的所有文件对象并存入File[]中
- * 2.遍历数组 如果是文件夹则递归
- * 如果是文件则复制
- * */
- public static void copyFiles(File dir1,File dir2) throws IOException {
- File[] files = dir1.listFiles();
-
- for (File file : files) {
- if(file.isDirectory()) {
- File f = new File(dir2,file.getName());
- f.mkdirs(); //创建文件夹目录
- copyFiles(file,f);
- }else {
- //copy(file,new File(dir2,file.getName()));
- copy(file,dir2);
- }
- }
- }
- /*定义方法copy将文件拷贝到指定的文件夹下
- * A.返回值类型void
- * B.参数列表File file,File dir
- * 1.创建输入流对象关联file
- * 2.创建输出流对象关联dir,file
- * 3.读写
- * 4.关流释放资源
- * */
- public static void copy(File file,File dir) throws IOException {
- BufferedInputStream fis = null;
- BufferedOutputStream fos = null;
- try {
- fis = new BufferedInputStream(new FileInputStream(file));
- fos =new BufferedOutputStream(new FileOutputStream(new File(dir,file.getName())));
-
- int len; //读写
- while((len = fis.read()) != -1) {
- fos.write(len);
- }
- }finally {
- try {
- if(fis != null)
- fis.close();
- }finally {
- if(fos != null)
- fos.close();
- }
-
-
- }
-
-
- }
- }
复制代码 |
|