java调用copy复制子文件夹及文件到指定目录(非xcopy)

因为作所以烦因为烦所以快乐...(为什么不先查一下有没有现成的命令,后悔啊!!)

不知道有xcopy这个命令就自己想写个复制子目录和文件的功能。。。以下故事诞生了

是这样的,昨天在学校弄的半成品,半成品弄完晚上就跟朋友打cf了。。。他是个会带队团灭的牛逼人物!!

然后隔天早上去学校就拿半成品测试了一下,发现直接用copy只能复制文件啊,不能直接复制子目录里的文件(目录指的是文件夹,子目录就是文件夹里面还有文件夹当然也有可能是文件)。。。。。那怎么搞???纠结了一下,就开始把半成品稍微改了一下,似乎没什么卵用。。

然后就在那听歌,在想,在发呆。。(厉害了我的哥),那位团灭的牛逼人物还时不时来跟我说话,就这样一上午过去了。。。

然后就去吃饭了,反正一早上就想了一个大概的思路。

首先要知道:目录里有n个文件,n个目录;n个目录里又有n个文件及n个目录以此类推没完没了的(没完没了是假的夸张一点而已)

我是这样想的:

1.判断如果是文件直接复制到目标目录,如果是目录就保存到集合,保存的同时在目标目录先创建好要复制的目录

if(是目录){

在目标文件夹创建要复制的文件夹

路径保存到集合

}esel{

执行copy命令进行赋值

}

2.刚刚也说了目录里有可能有n个文件和n个子目录很多种可能(自己想想)

那么我只要再加个循环遍历这个集合里的目录,再进行一次判断,如果是文件还是跟第一次一样直接复制到目标目录

如果是目录继续保存到集合

大概这样写:

if(是目录){

在目标文件夹创建要复制的文件夹

路径保存到集合

for(int i=0...){

if(是目录){

在目标文件夹创建要复制的文件夹

保存到集合

}else{

直接复制过去

}

}

}else{

执行copy命令进行赋值

}

大概思路就是这样子。

贴上代码:

 1 package com.d9.util;
 2
 3 import java.io.BufferedReader;
 4 import java.io.File;
 5 import java.io.IOException;
 6 import java.io.InputStreamReader;
 7 import java.util.ArrayList;
 8 import java.util.List;
 9
10 public class dosCopyTest {
11
12     public static void main(String[] args) throws IOException {
13         String path="f:\\test1";
14         String targetPath="f:\\copytest";
15         File file1=new File(path);
16         File file2=new File(targetPath);
17         file2.mkdirs();
18         String strname []=file1.list();
19         Runtime run=Runtime.getRuntime();
20         Process p=null;
21         List<String> lpath=new ArrayList<String>();
22         for(String fn:strname) {
23             file2=new File(path+"\\"+fn);
24             if(file2.isDirectory()) {
25                 new File(targetPath+"\\"+fn).mkdirs();
26                 lpath.add("\\"+fn+"\\");
27                 for(int i=0;i<lpath.size();i++) {
28                     file2=new File(path+lpath.get(i));
29                     String strname1 []=file2.list();
30                     for(String fn1:strname1) {
31                         if(new File(path+lpath.get(i)+fn1).isDirectory()) {
32                             new File(targetPath+lpath.get(i)+fn1).mkdirs();
33                             lpath.add(lpath.get(i)+fn1+"\\");
34                         }else {
35                             p=run.exec("cmd /c copy "+path+lpath.get(i)+fn1+" "+targetPath+lpath.get(i)+fn1);
36                             BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
37                             String line = null;
38                             while ((line = reader.readLine()) != null) {
39                                System.out.println(line);
40                             }
41                         }
42                     }
43                 }
44             }else {
45                 p=run.exec("cmd /c copy "+path+"\\"+fn+" "+targetPath+"\\"+fn);
46                 BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
47                 String line = null;
48                 while ((line = reader.readLine()) != null) {
49                     System.out.println(line);
50                 }
51             }
52         }
53     }
54 }

这样就可以连带子目录和文件一起复制了,测试过没毛病的。

其实早上也写的差不多,但是写的有点乱,中午吃完饭回来在那改,改到上课还是没改完。。

课上完还是在那改。。。改得超级烦,因为思路都短路了,都不知道自己在改什么代码看起来实在有点乱(佩服自己写的代码)

放学回到家坐了一会就打算重写一遍。开了机打开了eclipse然后脑子一直在想春风十里春风十里春风十里春风十里春风十里,在想我的优酷会员什么时候过期~过期~过期~过期,想着想着就直接打开了youku,居然更新到29集了

发现还有3集可以看。。。此时此刻我都没纠结要不要去写代码,直接点开就看,连吃饭都在看,3集被ko。看了之后心情好爽!唯一不爽的就是那个女主角周冬雨恶心。。

心情好写代码效率才高,写代码效率高心情才会好。。所以该放松就得放松该干嘛就干嘛

看完10点多了。。。然后就把eclipse重新打开。。重新整理了一下思路

15分钟写完了???

用dos命令可以用xcop 命令赋值目录里的文件及目录

如:xcopy f:\a f:\b

以后就用这种风格来bb写代码的过程了

时间: 2024-10-16 11:45:55

java调用copy复制子文件夹及文件到指定目录(非xcopy)的相关文章

不需要写代码,文件夹右键cmd定位指定目录

引子 这篇文章其实本来不是这样的,因为我用C#的代码实现了一个程序,后面才突然发现,我太傻太天真了,明明不需要写程序和写代码的,结果自己把自己二住了. 我们来看看效果图. 由于,我自己的原因,这个功能,最开始我使用的居然是自己写的程序来实现,太傻了. 参考了.两个网站,就可用搞定的,其实. 注册表路径: 图片最小面有的哦... 1. 如何对文件添加右键菜单. 2.如何使用cmd定位到指定目录. 参考内容: http://jingyan.baidu.com/article/295430f12371

JAVA调用C语言写的SO文件

JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 1 // 用JNI实现 2 // 实例: 3 4 // 创建HelloWorld.java 5 class HelloWorld 6 { 7 private native void print(); 8 public static void main(String[] args) 9 { 10 new HelloWorld().p

Java删除文件夹和文件

Java删除文件夹和文件 以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下,做个总结,算是一个学习备份…… 1,验证传入路径是否为正确的路径名(Windows系统,其他系统未使用) Java代码 // 验证字符串是否为正确路径名的正则表达式 private static String matches = "[A-Za-z]:\\\\[^:?\"><*]*"; // 通过 sPath.matches(

【Java】读取其下所有文件夹与文件的路径

如果在f:\aa文件夹中,有如下图的文件夹与文件: 那么,在Java中,则如此读取f:/aa下的所有文件路径: 1.首先由于用到了文件与容器类下的ArrayList,所以在开头要引入如下包: import java.io.*; import java.util.*; 2.方法如下,其中File dirFile除了盘符,比如f:,以外,能够接受一切合法的路径.由于盘符下含有一些系统文件,拒绝访问,因为读取盘符,可能会出现空指针异常. //这里是仅仅查询当前路径下的所有文件夹.文件并且存放其路径到文

JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。

package ioTest.io3; /* * 获取指定目录下的文件夹和文件的File对象或是字符串名称. * 也可以通过filter获取指定的文件夹或者指定类型的文件 * 这里面需要做一个总结,如何利用jdk的源码去理解不熟悉的方法的应用. */ import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; public class FileDemo2 { public static void m

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调用dll或so动态库文件(c++/c)

java调用dll或so动态库文件(c++/c) 博客分类: 工作 CC#C++JavaEclipse java调用dll或so动态库文件(c++/c)开发平台:Eclipse3.3.1.1+CDT(cdt-master-4.0.3)+MinGW(MinGW-5.1.4) 一:下面是java调用dll(C++) 1:下载并安装cdt :http://www.eclipse.org/cdt/downloads.php  :选择自己eclipse 支持的cdt插件,下载,并且 通过eclipse--

java打印出某一指定路径下的文件夹内的所有子文件夹和文件,并区分开来

public class printoutFile { public static void main(String[] args) { printFile(new File("D:\\test"),1); } public static void printFile(File file,int sub) { if (file.isFile()) { System.out.println("您给定的是一个文件"); // 判断给定目录是否是一个合法的目录,如果不是,

【Android】14.3 浏览手机中的所有文件夹和文件

分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 前面我们了解了内部存储.外部存储的含义,用一句话说,内部存储实际上是保存在"data"文件夹下,外部存储(SD卡)实际是保存在"sdcard"或者"storage"文件夹下. 这个例子演示如何将这些内部存储和外部存储的文件夹及其子文件架下的文件全部显示出来,类似于树形结构一层一层地向下看(例子没有实现返回上层的功能,或者说,仅仅实现了Android自带的文件浏览