目錄拷貝程序(無限級拷貝)

本文介绍了一种使用Java实现的文件夹复制工具,能够递归地复制整个目录结构及其所有子目录和文件。该工具分为两个类:FileCopy用于单个文件的复制,DirectoryCopy用于整个目录的复制。

FileCopy.java:

import java.io.*;
public class FileCopy
{
FileInputStream FIS;
FileOutputStream FOS;
public boolean copyFile(String src, String des)
{
try
{
//取得輸入出流
FIS = new FileInputStream(src);
FOS = new FileOutputStream(des);
byte[] bt = new byte[1024];
int readNum = 0;
while ((readNum = FIS.read(bt)) != -1)
{
FOS.write(bt, 0, bt.length);
}
FIS.close();
FOS.close();
return true;
}
catch (Exception e)
{
try
{
FIS.close();
FOS.close();
}
catch (IOException f)
{
// TODO
}
return false;
}
finally
{
}
}
}

DirectoryCopy.java:

/*
* 文件拷貝函數,可以拷一個指定文件夾下面的所有文件,及其子目錄中的文件
* 以及子目錄中子目錄下面的內容
*/

import java.io.*;

public class DirectoryCopy
{
FileInputStream FIS;
FileOutputStream FOS;

public DirectoryCopy()
{
}
//文件夾拷貝核心函數

public boolean copyDirectory(String SrcDirectoryPath,
String DesDirectoryPath)
{

try
{
//創建不存在的目錄
File F0 = new File(DesDirectoryPath);
if (!F0.exists())
{
if (!F0.mkdir())
{
System.out.println("目標文件夾不存,創建失敗!");
}
}
File F = new File(SrcDirectoryPath);
File[] allFile = F.listFiles(); //取得當前目錄下面的所有文件,將其放在文件數組中
int totalNum = allFile.length; //取得當前文件夾中有多少文件(包括文件夾)
String srcName = "";
String desName = "";
int currentFile = 0;
//一個一個的拷貝文件
for (currentFile = 0; currentFile < totalNum; currentFile++)
{
if (!allFile[currentFile].isDirectory())
{
//如果是文件是采用處理文件的方式
srcName = allFile[currentFile].toString();
desName =
DesDirectoryPath + "\\" + allFile[currentFile].getName();
FileCopy FC = new FileCopy();
FC.copyFile(srcName, desName);
}
//如果是文件夾就采用遞歸處理
else
{
//利用遞歸讀取文件夾中的子文件下的內容,再讀子文件夾下面的子文件夾下面的內容...
if (copyDirectory(allFile[currentFile].getPath().toString(),
DesDirectoryPath + "\\" +
allFile[currentFile].getName().toString()))
{
//System.out.println("D Copy Successfully!");
}
else
{
System.out.println("SubDirectory Copy Error!");
}
}
}
return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}

public static void main(String[] args)
{
DirectoryCopy directoryCopy = new DirectoryCopy();
/*
if (args.length != 2)
System.exit(0);
File F = new File(args[0]);
if (F.exists())
{
if (!F.isDirectory())
{
System.out.println("請輸入一個目錄的全路徑!");
System.exit(0);
}
}
else
{
System.out.println("你輸入的路徑不存在!");
}
*/
//if (directoryCopy.copyDirectory(args[0], args[1]))
if (directoryCopy.copyDirectory("e:\\123", "e:\\456"))
{
System.out.println("Directory Copy Successfully!");
}
else
{
System.out.println("Directory Copy error!");
}
}
}

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值