文件夹的拷贝

需要引用笔记《文件拷贝的实现》的方法

 1   public static void copyDirectory(File src,File dest){
 2         if(src.isDirectory()){
 3             dest=new File(dest,src.getName());//在dest文件夹下创建src文件夹
 4         }
 5         copyDir(src, dest);
 6     }
 7     public static void copyDir(File src,File dest){
 8
 9         if(src.isDirectory()){
10             dest.mkdirs();
11             for(File sub:src.listFiles()){
12                 copyDirectory(sub, new File(dest,sub.getName()));
13             }
14         }else if(src.isFile()){
15             copyFile(src, dest);
16         }
17     }

  A (源文件夹)                            B(目标文件夹)

/    \

b      c

|

d.txt

假设此时,要复制A文件夹到B文件夹

1.那么copyDir()方法是用来干嘛的呢?

答:是为了复制A(文件夹),仅仅是用来复制A而已,不包括A文件夹里面的b/c/d.txt等文件。

如果,没有调用copyDir(),那么B文件夹下的内容将会是:

B

/    \

b     c

|

d.txt

调用copyDir()的结果是:

B

|

A

/    \

b     c

|

d.txt

完整代码:

 1 package com.IO;
 2 import java.io.*;
 3 public class CopyUtil {
 4     /**
 5      * 拷贝文件夹
 6      * @param src
 7      * @param dest
 8      */
 9     public static void copyDirectory(String srcPath,String destPath){//重载copyDirectory()方法
10         File src=new File(srcPath);
11         File dest=new File(destPath);
12         copyDirectory(src, dest);
13     }
14     public static void copyDirectory(File src,File dest){
15         if(src.isDirectory()){
16             dest=new File(dest,src.getName());//在dest目录下创建一个src同名的文件
17         }
18         copyDir(src, dest);
19     }
20     public static void copyDir(File src,File dest){
21         if(src.isDirectory()){
22             dest.mkdirs();
23             for(File file:src.listFiles()){
24                 copyDir(file, new File(dest,file.getName()));//重点!!
25             }
26         }else if(src.isFile()){
27             copyFile(src, dest);
28         }
29     }
30     /**
31      * 拷贝文件
32      * @param src
33      * @param dest
34      */
35     public static void copyFile(String srcPath,String destPath){
36         File src=new File(srcPath);
37         File dest=new File(destPath);
38         copyFile(src, dest);
39     }
40     public static void copyFile(File src,File dest){
41         BufferedInputStream bis=null;
42         BufferedOutputStream bos = null;
43         try {
44             bis = new BufferedInputStream(new FileInputStream(src));
45             bos = new BufferedOutputStream(new FileOutputStream(dest));
46             byte[] flush=new byte[1024];
47             int len=0;//实际获取的数据长度
48             while(-1!=(len=bis.read(flush))){
49                 bos.write(flush);//写入数据
50             }
51             bos.flush();
52         } catch (FileNotFoundException e) {
53             System.out.println("文件找不到");
54             e.printStackTrace();
55         } catch (IOException e) {
56             System.out.println("读取流失败");
57             e.printStackTrace();
58         }finally{
59
60             try {
61                 if(null!=bos){
62                     bos.close();
63                 }
64                 if(null!=bis){
65                     bis.close();
66                 }
67             } catch (IOException e) {
68                 System.out.println("关闭流失败!");
69                 e.printStackTrace();
70             }
71
72         }
73     }
74 }
时间: 2024-10-09 21:02:06

文件夹的拷贝的相关文章

Java字节流实现文件夹的拷贝

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** · java字节流实现文件夹的拷贝 · 拷贝文件夹,其中文件夹中又有多个文件 · 1.先遍历这个文件夹,判断是否是目录 · 2.创建文件夹 · 3.拷

IO流 文件夹的拷贝(字节流)

文件夹拷贝 package cn.Reader; import java.io.File; import java.io.IOException; /* * 文件夹的拷贝 * 1.文件复制 Copyfile * 2.文件夹创建 mkdirs() * 3.递归查找子孙级 */ public class CopyDir { public static void main(String [] args) { String srcPath="C:/Users/Administrator/Desktop/

Linux下 两台机器文件/文件夹 相互拷贝

设有两台机器 :A:*.101及 B:*.102. 把A下的.temp/var/a.txt拷贝到B机器的/text/目录下: 进入B机器:scp [email protected]*.101:/temp/var/a.txt /test/ 或 进入A机器:scp /temp/var/a.txt [email protected]*.102:/test/ 把A下的文件夹(含子文件夹)/temp/var/拷贝到B机器/test/目录下: 进入B机器:scp -r [email protected]*.

文件与文件夹的拷贝

//文件拷贝---------------------------------------------------------------------------- public void copyFile(File src_, File dest_) { File src = src_;//源文件 File destination = dest_;//目的地 if(!src.isFile()) { new Exception("ssssssss"); } InputStream is

IO 文件夹的拷贝

package FileCopy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import

C# 备份、还原、拷贝远程文件夹

最近一直都很忙,非常抱歉好久没有写过博客了.最近遇到拷贝远程文件的一些工作,比如我们发布的web站点的时候,开发提供一个zip压缩包,我们需要上传到远程的服务器A,然后在部署(文件拷贝)到远程环境B和C,ABC都在一个局域网里面. 首先我们需要一个工具类来转换文件路径,本地地址与远程地址的转换 比如192.168.0.1上的D:\test 转换 为\\192.168.0.1\D$\test,文件路径的拼接, public class PathUtil { public static string

10.java拷贝文件夹

文件复制 文件夹拷贝 文件复制 文件复制步骤: 1.建立文件代理->File源文件/File目的文件 2.设立管道,建立管道 3.数据装箱 4.循环读取,循环输出 5.关闭流 package 文件夹的拷贝; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; impo

linux两台服务器之间文件/文件夹拷贝

跨服务器拷贝需要用到的命令是scp. ----------------------拷贝文件夹---------------------------------------------- 把当前文件夹tempA拷贝到 目标服务器10.127.40.25 服务器的 /tmp/wang/文件夹下 scp -r /tmp/tempA/ [email protected]:/tmp/wang/ 其中wasadmin是目标服务器的用户名,执行命令提示输入密码,然后输入密码即可 ---------------

iOS文件和文件夹的创建,删除,移动, 拷贝,是否存在及简单数据类型的读写

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // 沙盒(SandBox) // Documents(文件文档, 用户主动数据存储) // Libray(资源, 一般用来存放, 程序员要存储的一些数据