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!");
}
}
}
分享到:
相关推荐
本项目实现了利用线程池进行目录拷贝的功能,这涉及到多个重要的编程概念和技术,包括线程池的创建与管理、目录遍历、文件I/O操作以及并发控制。 首先,线程池是通过预先创建一组线程来实现的,这些线程在空闲时...
块拷贝 程序 Arm汇编程序 ADS1.2开发环境块拷贝 程序 Arm汇编程序 ADS1.2开发环境块拷贝 程序 Arm汇编程序 ADS1.2开发环境块拷贝 程序 Arm汇编程序 ADS1.2开发环境
汇编 编写一拷贝程序,要求在命令行指定源文件名和目标文件名.
利用线程池实现拷贝目录的效果,让其效果等同于cp命令。
本话题聚焦于C语言编写的文件拷贝程序,它涉及到文件操作、内存管理、流程控制等多个关键知识点。 首先,我们需要了解C语言中的文件操作。在C语言中,文件被视为字节流,可以使用标准库中的`<stdio.h>`头文件进行...
在“copy_files.zip”这个压缩包中,我们看到的是一个使用线程池来实现文件目录拷贝的程序。下面我们将深入探讨线程池的概念、其工作原理,以及如何应用于文件操作,特别是文件目录的拷贝。 1. **线程池概念**: ...
linux 下实现目录文件的拷贝 关键是拷贝目录函数 用的是递归
【文件拷贝程序】是一种基于C#编程语言和Windows Forms(Winform)界面设计的应用程序,主要用于方便用户高效地进行文件和目录的复制操作。它采用客户端-服务器(CS架构)的设计模式,使得用户交互更加直观和简洁。...
在本文中,我们将深入探讨如何编写一个BAT脚本来实现目录的完整拷贝,包括目录结构,同时能够过滤特定类型的文件,例如隐藏的.svn版本控制文件和.txt文本文件。 首先,我们需要了解批处理脚本的基础知识。BAT文件是...
【文件拷贝程序MFC】是基于VC++6.0集成开发环境下的一个应用程序,它利用Microsoft Foundation Classes (MFC)库来构建。MFC是一个C++类库,它为Windows API提供了一种面向对象的封装,使得开发者可以更加方便地进行...
可以把指定目录下的所有文件(不管里面有多少层的文件夹)拷贝到指定的目录中。 系统要求:Windows 64-bit 使用方法: 1.解压后双击“拷贝目录内所有文件到指定目录.exe” 2.在根目录中输入想拷贝的目录路径 3.在...
在Windows CE(简称WinCE)操作系统中,开发一个屏幕拷贝程序是一项常见的需求,尤其对于系统测试、故障排查或是远程监控等应用场景。本程序通过源代码实现,利用线程机制来实现在特定时间间隔内自动捕获并保存屏幕...
标题中的“U盘文件自动拷贝程序源代码”是指一种使用C语言编写的软件,它的主要功能是在检测到U盘插入计算机时,自动将U盘内的文件复制到用户预先设定的目标文件夹。这个程序可以设计成在后台静默运行,不打扰用户...
MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序开发。它封装了许多Windows API,使得开发者可以使用面向对象的方式来构建应用程序。在这个主题中,我们主要探讨的是如何利用...
在本场景中,任务是将配置文件从应用的资源或指定位置拷贝到运行时应用的当前目录,以便程序可以访问这些配置文件。下面我们将详细探讨如何在WPF应用中实现这个功能。 首先,我们需要了解WPF应用程序的基本结构。...
【线程并发拷贝程序实验】是针对多线程环境下数据拷贝的一种实现方式,它利用线程的并发性提高程序执行效率。在这个实验中,我们关注的重点是线程的并发操作、进程间的通信以及资源的同步管理。 1. **线程并发**:...
### VC实现文件夹从一个目录下拷贝到另一个目录 #### 概述 在软件开发过程中,经常需要处理文件及文件夹的操作,如复制、移动等。本文将详细介绍如何使用Visual C++(简称VC)来实现文件夹从一个目录复制到另一个...
本文将深入探讨如何利用批处理程序在局域网内实现机器间的文件拷贝,以及如何将该程序设置为计划任务以定期执行。 批处理程序(Batch Script)是基于DOS或Windows操作系统的一系列命令的集合,它通过一个单一的文件...
本项目旨在通过编程实现一个简单的“文件拷贝程序”,下面将详细介绍相关知识点。 首先,我们需要了解的是Linux系统调用。系统调用是用户空间程序与内核交互的主要方式,它们提供了访问硬件资源和执行特权操作的...
Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝InputStream类Java SE程序 文件的拷贝...