使用 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. 解决win10 蓝牙设备只能配对无法连接 ,并且删除设备无效的问题

    系统环境: win10家庭版 dell本 问题描述:蓝牙设备(比如蓝牙键盘,蓝牙音箱)出现无法连接的情况,打算删除已配对的设备,再重新配对连接.但删除设备后重启蓝牙,那些原本被删除的设备又自动配对上, ...

  2. LEETCODE 07 09

    最近忙着面试耽误了几天,今天刷了07,09都是字符串处理,一个是大数反转,一个是回文数判断,我都是转成字符串处理的,过了是过了,但是挺慢的,先记着,等有机会优化下 题目 给定一个 32 位有符号整数, ...

  3. druid 连接池加密算法

    package juint; import com.alibaba.druid.filter.config.ConfigTools; public class DruidTest { public s ...

  4. SpringCloud问题解决:spring-cloud-eureka启动出错Cannot execute request on any known server

    场景: 在启动eureka server时,出现以下错误: com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectExce ...

  5. git删除远程分支,删除本地分支

    远程 # git push origin --delete duck - [deleted] duck 本地 # git branch -d duck 已删除分支 duck(曾为 dda11b8). ...

  6. 雷林鹏分享:Composer 安装

    下午在安装 Laravel 框架过程中,遇到了不少问题,因为 Laravel 的安装依赖于 composer,这里就先介绍一下 composer 的安装方法: 安装方法: #下载 sudo curl ...

  7. 《SQL 基础教程》第六章:函数、谓词、CASE 表达式

    函数是 SQL 中的一部分.在 SQL 中,除了普通的函数之外,还有特殊的函数(谓词和 CASE 表达式)用于各种情况. 函数 函数的种类有: 算术函数 字符串函数 日期函数 转换函数(用于转换数据类 ...

  8. C语言实验一(1)

    #include<stdio.h>int main(){ int a,b,sum; a=123; b=456; sum=a+b; printf("sum is %d\n" ...

  9. 现代 PHP 新特性 —— Zend Opcache (转)

    转自:https://laravelacademy.org/post/4396.html 1.概述 字节码缓存不是PHP的新特性,有很多独立的扩展可以实现,比如APC.eAccelerator和Xac ...

  10. Appium TestNg Maven Android Eclipse java自动化环境搭建

    1.环境准备 1)Eclipse + maven + appium + TestNg 确保已经在Eclipse 上面安装maven TestNg的插件 2)打开Eclipse,新建一个maven项目 ...