使用 I/O 流和文件对象实现目录备份功能。

 package asg5;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class copyFileDir { public static void main(String[] args) throws IOException
{
copyDir("D:\\大二\\java\\Java程序设计课件", "D:\\大二\\java\\1");
}
/**
* 使用递归复制目录,
*
* @param FromDir
* 源目录的路径名称
* @param ToDir
* 目的目录的路径名称
* @throws IOException
*/
public static void copyDir(String FromDir, String ToDir) throws IOException
{
// 创建目录的File对象
File srcDir = new File(FromDir);
// 判断源目录是不是一个目录
if (!srcDir.isDirectory())
{
// 如果不是目录那就不复制
return;
}
// 创建目的目录的File对象
File destDir = new File(ToDir);
// 如果目的目录不存在
if (!destDir.exists())
{
// 创建目的目录
destDir.mkdir();
} // 获取源目录下的File对象列表,每一个对象代表一个目录或者文件
File[] srcDirList = srcDir.listFiles();
// 遍历源目录File对象列表
for (int i = 0; i < srcDirList.length; i++)
{
// 如果是目录的话
if (srcDirList[i].isDirectory()) {
// 递归调用复制该目录
copyDir(FromDir + File.separator + srcDirList[i].getName(),
ToDir + File.separator + srcDirList[i].getName());
}
// 如果是文件的话
if (srcDirList[i].isFile())
{
// 调用复制文件的方法
copyFile(FromDir + File.separator + srcDirList[i].getName(),
ToDir + File.separator + srcDirList[i].getName());
} }
}
/**
* 复制一个文件
*
* @param srcFile
* 源文件
* @param destFile
* 目的文件
* @throws IOException
*/
public static void copyFile(String srcFile, String destFile)
throws IOException
{
FileInputStream in = new FileInputStream(srcFile);
FileOutputStream out = new FileOutputStream(destFile);
// 2097152(Byte)=2048(KB)=2M
byte[] buffer = new byte[2097152];
int size = 0;
// 每次读取一个字节数组
while ((size = in.read(buffer)) != -1)
{
// 读到多少写入多少
out.write(buffer, 0, size);
}
in.close();
out.close();
} }

用户指定源目录、目标目录以及备份文 件类型(如果是任意文件使用通配符*号),通过此程序可将源目录及其所有子目录 下的指定类型文件保存到目标目录

Java 平时作业五的更多相关文章

  1. 平时作业五 Java

    使用I/O流和文件对象实现目录备份功能.用户指定源目录.目标目录以及备份文件类型(如果是任意文件使用通配符*号),通过此程序可将源目录及其所有子目录下的指定类型文件保存到目标目录. package c ...

  2. Java 平时作业四

    编写一个Java程序实现返回指定目录及其子目录下扩展名为*.pdf的所有文件名. 扩展: isFile public boolean isFile() 测试此抽象路径名表示的文件是否为普通文件. 如果 ...

  3. Java 平时作业七

    以下是几本计算机书籍的基本信息 编号  书名         价格      出版社 1  JAVA 基础   32   清华大学出版社 2  JAVA WEB 开发  40   电子工业出版社 3  ...

  4. Java 平时作业六

    编写一个 Java 应用程序,使用 Java 的输入输出流技术将 Input.txt 的内容(Input.txt 为文本 文件)逐行读出, 每读出一行就顺序为其添加行号(从 1 开始,逐行递增),并写 ...

  5. Java 平时作业三

    自定义一个可以存储 int 类型的集合类(例如:SequenceList),封装一维数组存储数据,该 集合类具有以下方法: (1)新增元素: (2)在指定位置插入一个元素: (3)按位置删除元素: ( ...

  6. JAVA 平时作业二

    编写一个 Java 应用程序,统计数组{1,3,4,7,2,1,1,5,2,5,7,2,1,1,3},统 计显示每种数字其出现的次数以及出现最多和最少次数的数字 public class Number ...

  7. JAVA 平时作业一

    public class Print { public static void main (String arg[]) { for(int i=0;i<16;i++) { for(int j=0 ...

  8. JAVA 数组作业——动手动脑以及课后实验性问题

    JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...

  9. JAVA自学作业03

    JAVA自学作业03 1.请用最有效率的方式计算2*8的结果 使用位运算是最有效率的. System.out.println(2<<3); 2.请交换两整数的值 int x = 10; i ...

随机推荐

  1. dubbo框架初步学习

    dubbo简介 Dubbo是一个分布式服务框架,以及SOA治理方案.其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等. 官网:http://dubb ...

  2. UP_GetRecordByPage

    CREATE PROCEDURE [dbo].[UP_GetRecordByPage] @tblName varchar(255), -- 表名 @fldName varchar(255), -- 主 ...

  3. 肿瘤数据库除了TCGA,还有TCIA--转载

    TCIA就是基于TCGA数据开发的,不同的是TCIA只提供了20个癌种的免疫数据分析. 看网站首页的介绍就知道,这个数据库主要是根据TCGA的二代测序数据开发出来的.这里的20个癌种,点击每个柱子进去 ...

  4. Qt5OpenGL.顶点像素大小设置

    1. 2. // ZC: 像素点的大小 设置:2种方式: // ZC: (1)代码指定方式 // ZC: (2)GLSL种指定方式[A]只能在顶点着色器种指定,不能在片原着色器种指定[B]代码中还要指 ...

  5. 20165303魏煜第一周kali安装

    1.根据网址下载kali 这是kali的下载地址https://www.kali.org 找到download选择Kali Linux 64 bit VMware VM,点击后面蓝色部分开始下载选择6 ...

  6. SVN-Failed to run the WC DB work queue associated with

    解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db 3.将sqlite3.exe放到.svn的同级目录 4.启动cmd执行sqlite3 ...

  7. DPDK kni创建要先于port开启

    DPDK kni创建要先于port开启 1. DPDK kni创建使用API:- rte_kni_init- rte_kni_alloc 2. DPDK port开启使用API:- rte_eth_d ...

  8. C语言博客作业05——指针

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量 1.2.1学习体会 可能因为之前数组那块儿的作业拖得太久了,以至于我觉得指针学的好快,还没反应过来就教完了,然后一开始做题的时候,就是一脸 ...

  9. nodeJs安装Vue-cli

    1,安装nodejs安装包,注意安装的路径 2,安装完成node,node有自带的npm,可以直接在cmd中,找到nodeJs安装的路径下,进行命令行全局安装vue-cli.(npm install ...

  10. jieba库与词云的使用——以孙子兵法为例

    1.打开cmd安装jieba库和 matplotlib. 2.打开python,输入代码.代码如下: from wordcloud import WordCloud import matplotlib ...