java实现文件夹(包括其中的子文件夹、子文件)的复制——递归

这是学校java课的一道实验题,题目如下:编程,根据指定的源和目标位置,完成指定文件或文件夹(包括其中的子文件夹、子文件)的复制。

以下是我的实现,使用了递归:

 1 package com.simon.myfinal;
 2
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.InputStream;
 7
 8 /**
 9  * Created by Rainmer on 2015/6/28.
10  */
11 public class FileCopy {
12     public static void main(String[] args) {
13         String oldPath = "D:/bower";
14         String newPath = "D:/bowerCopy";
15         File dirNew = new File(newPath);
16         dirNew.mkdirs();//可以在不存在的目录中创建文件夹
17         directory(oldPath, newPath);
18         System.out.println("复制文件夹成功");
19     }
20
21     /**
22      * 复制单个文件
23      * @param oldPath 要复制的文件名
24      * @param newPath 目标文件名
25      */
26     public static void copyfile(String oldPath, String newPath) {
27         int hasRead = 0;
28         File oldFile = new File(oldPath);
29         if (oldFile.exists()) {
30             try {
31                 FileInputStream fis = new FileInputStream(oldFile);//读入原文件
32                 FileOutputStream fos = new FileOutputStream(newPath);
33                 byte[] buffer = new byte[1024];
34                 while ((hasRead = fis.read(buffer)) != -1) {//当文件没有读到结尾
35                     fos.write(buffer, 0, hasRead);//写文件
36                 }
37                 fis.close();
38             } catch (Exception e) {
39                 System.out.println("复制单个文件操作出错!");
40                 e.printStackTrace();
41             }
42         }
43     }
44
45     /**
46      *
47      * @param oldPath 要复制的文件夹路径
48      * @param newPath 目标文件夹路径
49      */
50     public static void directory(String oldPath, String newPath) {
51         File f1 = new File(oldPath);
52         File[] files = f1.listFiles();//listFiles能够获取当前文件夹下的所有文件和文件夹
53         for (int i = 0; i < files.length; i++) {
54             if (files[i].isDirectory()) {
55                 File dirNew = new File(newPath + File.separator + files[i].getName());
56                 dirNew.mkdir();//在目标文件夹中创建文件夹
57                 //递归
58                 directory(oldPath + File.separator + files[i].getName(), newPath + File.separator + files[i].getName());
59             } else {
60                 String filePath = newPath + File.separator + files[i].getName();
61                 copyfile(files[i].getAbsolutePath(), filePath);
62             }
63
64         }
65     }
66 }
时间: 2024-10-05 04:43:07

java实现文件夹(包括其中的子文件夹、子文件)的复制——递归的相关文章

java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

import java.io.File; public class ReadDirectory { // 文件所在的层数 private int fileLevel; /** * 生成输出格式 * @param name 输出的文件名或目录名 * @param level 输出的文件名或者目录名所在的层次 * @return 输出的字符串 */ public String createPrintStr(String name, int level) { // 输出的前缀 String print

JAVA利用递归的方法删除一个文件夹以及文件夹下所有的子文件

public static boolean deleteFolder(String url) { File file = new File(url); if (!file.exists()) { return false; } if (file.isFile()) { file.delete(); return true; } else { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { Stri

Powershell 从多个文件中找出关键子文件(findstr)

从文件中找出关键字 $colItems = Get-ChildItem d:\test #定义文件夹的路径 foreach ($i in $colItems) #循环获取文件夹下的txt文件 { $filecontent= Get-Content $i.fullName | findstr /i "a" #获取txt文件的内容 并找到数字a write-host $filecontent $i.fullname} #输出到屏幕上  

Java File 类 文件的常用操作(递归遍历所有文件,统计文件大小,删除文件)

1 package com.beiwo.homework; 2 3 import java.io.File; 4 5 /* 6 4.将一个文件夹中所有的文件查找出来,按照一定的格式 7 分析 : 1.一个文件夹中存在文件,子文件夹 8 2.除了当前文件夹,还有子文件夹中的文件也需要找出来. 9 3.子文件查找文件和当前文件查找文件是一样的操作,就可以定义一个方法来做文件查找 10 11 3.删除一周前的数据 12 13 2.获取文件夹中所有文件的大小 14 15 1.判断是否有隐藏文件 16 1

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

【Java】移动文件夹及其所有子文件与子文件夹

在Java移动文件夹及其所有子文件与子文件夹可以有如下的一段简单的方法来说明: public static void moveFolder(String oldPath, String newPath) { //先复制文件 copyFolder(oldPath, newPath); //则删除源文件,以免复制的时候错乱 deleteDir(new File(oldPath)); } 不应该直接剪切文件,防止在剪切的时候出错,导致这样那样的问题. 在Java复制文件夹及其所有子文件与子文件夹,在<

【Java】利用ant插件压缩文件夹及其所有子文件与子文件夹

如果在Java要压缩一个文件夹及其所有子文件与子文件夹,可以利用到Apache公司提供的ant插件.其实也就是一个jar包. 比如,如果要把f:\bb下的所有文件,压缩成一个f:\bb.zip,如下图: 首先先到Apache的官网,下载ant插件,地址:http://ant.apache.org/bindownload.cgi(点击打开链接) 下载解压之后,取走其中的apache-ant-1.9.4\lib下的ant.jar放到你的java工程就行: 比如拷贝到你的java工程,目录结构如下图,

java 中使用线程池处理文件夹下面的子文件

读取某个文件夹下面的所有文件,使用多线程处理,例如读取E盘下面的文件内容: package thread; import java.io.File; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue;

给文件夹添加用户权限后,用户还是不能打开或修改子文件夹?

服务器环境:Windows Server 20003 R2 文件夹:a/b/c/d.txt :a/b/e:a/b/f: 问题描述:公司新员工需要查看服务器上的文件d.txt,并需要修改上面的文件.但是将文件夹a添加该用户可修改权限后.该用户还是不能修改文件,并且连文件夹c都进不去.提示没有权限!而且文件夹b下的e文件夹可以进,也可以修改.但是文件夹f也进不去,情况跟c的一样. 问题判断:1.先将文件夹c上其他用户权限与该用户的权限相比较.是否一致,判断是否是因为权限没加正确导致的.结果是一致的.