复制文件夹及其包含的子文件或子文件夹

 1 package com.hxl;
 2
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileOutputStream;
 8 import java.io.IOException;
 9
10 /**
11  *
12  * @author Schiller_Hu
13  * @version v1.0
14  *
15  *          分析:
16  *              A:封装数据源File
17  *              B:封装数据目的地File
18  *              C:判断该File是文件夹还是文件
19  *                  a:是文件夹
20  *                      就在目的地目录创建该文件夹
21  *                      获取该File对象下的所有文件或者文件夹File对象 遍历得到每一个File对象
22  *                      回到C
23  *                  b:是文件
24  *                      直接复制
25  *
26  */
27 public class Test {
28     public static void main(String[] args) throws IOException {
29         // 源路径
30         File srcFile = new File("E:\\工作学习\\计算机杂类\\Java Web开发\\Web基础\\JavaScript & jQuery精品教程视频");
31         // 目标路径
32         File destFile = new File("E:\\");
33         // 调用方法
34         copyFolder(srcFile, destFile);
35     }
36
37     public static void copyFolder(File srcFile, File destFile) throws IOException {
38         // 判断File对象是否是文件夹
39         if (srcFile.isDirectory()) {
40             // 拼接新文件夹所在路径
41             File newFolder = new File(destFile, srcFile.getName());
42             // 创建文件夹
43             newFolder.mkdir();
44             // 遍历源路径下的所有File对象
45             File[] fileArray = srcFile.listFiles();
46             for (File file : fileArray) {
47                 // 递归调用
48                 copyFolder(file, newFolder);
49             }
50         } else {
51             // 拼接新文件所在路径
52             File newFile = new File(destFile, srcFile.getName());
53             // 调用方法,复制文件
54             copyFile(srcFile, newFile);
55         }
56     }
57
58     // 高效字节流一次读取一个字节数组复制文件
59     public static void copyFile(File srcFile, File newFile) throws IOException {
60         // 数据源
61         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
62                 srcFile));
63         // 目的位置
64         BufferedOutputStream bos = new BufferedOutputStream(
65                 new FileOutputStream(newFile));
66         // 定义单次读取字节数组的大小,一般就写1024
67         byte[] bys = new byte[1024];
68         // read(byte[] bys)方法返回值为获取到的字节个数,若没有获取到,则返回-1
69         int length = 0;
70         while ((length = bis.read(bys)) != -1) {
71             // write(byte[] bys,int off,int length)方法指的是从指定字节数组的指定位置开始写入(复制到)文件
72             bos.write(bys, 0, length);
73         }
74         // 关闭输出流
75         bos.close();
76         // 关闭输入流
77         bis.close();
78     }
79 }

原文地址:https://www.cnblogs.com/schiller-hu/p/8463631.html

时间: 2024-10-22 10:42:03

复制文件夹及其包含的子文件或子文件夹的相关文章

Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码: import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Simple

获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中)

import java.io.File; import java.io.FileFilter; import java.io.ObjectInputStream.GetField; import java.util.ArrayList; import java.util.List; public class huoquwenjian { /*获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中) * 思路: * 1,既然包含子目录,就需要递归. * 2

matlab 把一个文件夹下的所有图片(可以包含在子文件夹下)考到指定文件夹下

clc;clear all; maindir = 'C:\Users\wang\Desktop\iLIDS-VID\i-LIDS-VID\images\cam2';subdir = dir( maindir ); % 先确定子文件夹 for i = 1 : length( subdir ) if( isequal( subdir( i ).name, '.' ) || ... isequal( subdir( i ).name, '..' ) || ... ~subdir( i ).isdir

PHP实现的遍历文件夹和子文件中的文件

<?php header("Content-type: text/html; charset=utf-8");  /* *php采递归遍历目录下的所有文件 * */ function dir_iterate($dir){ if (!is_dir($dir)) { echo "请输入文件"; exit(); } //打开文件 [email protected]($dir); while ($filename=readdir($dir_resource)) { i

C#WinForm treeview 简单文件夹管理器 查看文件夹下的文件,子文件下的文件

1 查看的文件夹中的内容 2 UI 3 代码 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.IO; 7 using System.Linq; 8 using System.Text; 9 using System.Threading.Tasks; 10 usi

使用File类列出指定位置的文件信息,包含该路径子目录下的文件信息

public class Test{ public static void main(String [] args) { File f=new File("d:"); File [] fl=f.listFiles(); show(f1); } public static void show(File [] f1) { for(File f:fl) { if(f.isDirectory()) { File [] f2=f.listFiles(); show(f2); } else { S

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

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

Android程序函数 将assets文件夹下的文件复制到手机的sd卡中(包括子文件夹)

最近在做个功能是将asset文件夹下的所有文件(包括子文件)全部拷贝出来到指定目录下.所用的方法无非是用AssetManager.但是这里有个问题是也要讲子文件夹和子文件都要拷贝出来.到网上Google了下,也到baidu搜索了下,发现了很多类似问题.但好像都有问题.显然只能做到将asset直接目录下的文件拷贝出来,但子文件夹拷贝不出来,而且,碰到文件夹,会抛异常.无奈自己只好动手写了个.如下: private void CopyAssets(String assetDir,String dir

MATLAB遍历子文件夹及其下文件

MATLAB遍历子文件夹及其下文件 以前从未遇到过用MATLAB批处理文件的情况,此次项目需要批量将二进制数据文件导入matlab进行svm分类,现将matlab遍历子文件夹及其文件的方法记录下来. 文件目录结构 /maindir |-- subdir1 |-- datafile1.dat |-- datafile2.dat |-- subdir2 |-- datafiel3.dat |-- datafiel4.dat |-- subdir3 |-- datafile5.dat |-- data