`
gary0416
  • 浏览: 334752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件夹备份工具

阅读更多

package com.gary.file;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

/**
 * 文件夹备份
 * @author gary
 * 
 */
public class FileSync {

	//要备份的目录
	static final String targetDir = "F:\\myTemp\\test\\target";
	//备份到
	static final String bakDir = "F:\\myTemp\\test\\bakdir";
	
	public static void main(String[] args) {
		File targetDirFile = new File(targetDir);
		File bakDirFile = new File(bakDir);
		if(!targetDirFile.exists()){
			System.out.println("目标目录不存在");
			System.exit(0);
		}
		if(!bakDirFile.exists()){
			try {
				System.out.println("备份目录不存在,创建目录" + bakDirFile.getCanonicalPath());
				bakDirFile.mkdirs();
			} catch (IOException e) {
				System.out.println("创建目录失败");
				System.exit(0);
			}
		}
		try {
			syncDirectory(new File(targetDir), new File(bakDir));
			delMore(new File(targetDir), new File(bakDir));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 同步目录
	 * @param target
	 * @param bak
	 * @throws IOException
	 */
	private static void syncDirectory(File target, File bak) throws IOException{
		if(!bak.exists()){
			bak.mkdirs();
			if(target.isHidden()){
				setHidenAttr(bak);
			}
		}
		String bakDirStr = bak.getCanonicalPath();
		File[] targetFiles = target.listFiles();
		for (int i = 0; i < targetFiles.length; i++) {
			if(targetFiles[i].isDirectory()){
				syncDirectory(targetFiles[i], new File(bakDirStr + File.separator + targetFiles[i].getName()));
			}else{
				File bakFile = new File(bakDirStr + File.separator + targetFiles[i].getName());
				if(!bakFile.exists() || targetFiles[i].length() != bakFile.length() || targetFiles[i].lastModified() > bakFile.lastModified()){
					FileUtils.copyFile(targetFiles[i], bakFile);
					if(targetFiles[i].isHidden()){
						setHidenAttr(bakFile);
					}
					System.out.println("同步文件" + targetFiles[i].getCanonicalPath() + " 到 " + bakFile.getCanonicalPath());
				}
			}
		}
	}
	
	/**
	 * 删除多余文件
	 * @param target
	 * @param bak
	 * @throws IOException
	 */
	private static void delMore(File target, File bak) throws IOException{
		if(!target.exists()){
			System.out.println("删除目录" + bak.getCanonicalPath());
			FileUtils.deleteDirectory(bak);
		}else{
			String targetDirStr = target.getCanonicalPath();
			File[] bakFiles = bak.listFiles();
			for (int i = 0; i < bakFiles.length; i++) {
				if(bakFiles[i].isDirectory()){
					delMore(new File(targetDirStr + File.separator + bakFiles[i].getName()), bakFiles[i]);
				}else{
					File targetFile = new File(targetDirStr + File.separator + bakFiles[i].getName());
					if(!targetFile.exists()){
						System.out.println("删除文件" + bakFiles[i].getCanonicalPath());
						bakFiles[i].delete();
					}
				}
			}
		}
	}
	
	/**
	 * 为文件添加 隐藏 属性
	 * @param file
	 */
	public static void setHidenAttr(File file){
		String command = "attrib +H \"" + file.getAbsolutePath() + "\"";
		try {
			Runtime.getRuntime().exec(command);
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(command + "失败");
		}
	}
}
 
分享到:
评论

相关推荐

    outlook 2003文件夹备份工具

    针对这一需求,出现了"Outlook 2003文件夹备份工具",该工具专门设计用于帮助用户轻松地备份他们的Outlook文件夹。 这个工具的安装过程相对简单,用户只需下载名为"rod_en_1.exe"的执行文件,然后按照标准的安装...

    局域网文件夹备份工具

    本程序可以备份指定文件夹内的所有文件到局域网内另一个共享文件夹下。 可以实现开机自动拷贝。将程序勾选autocopy后放入系统的计划任务自己调配下就可以完美工作了,自动拷贝时程序不出现界面,提示由任务右下角...

    DirSyncProForWindows文件夹备份工具V1.51绿色免费版

    DirSyncPro For Windows是一种用于文件和文件夹同步备份的功能强大的工具,可以用来一个或多个文件夹的内容备份,但功能强大的实用程序,文件和文件夹同步。目录同步Pro可以用于同步的内容的一个或多个文件夹递归。...

    我的云主机一直在用的文件夹备份工具

    在服务器里,我们最关心就是数据安全.数据库和文件备份很重要! 我就是在云主机上运行这个备份文件夹工具的,这样很放心.即使网站不小心被黑,也有数据及时导回,推荐!

    备份文件夹小工具

    "备份文件夹小工具"是一款专门针对文件夹备份需求设计的应用程序,它提供了一种更为灵活和可控的方式来处理文件和文件夹的复制操作。相比于传统的快捷键Ctrl+C和Ctrl+V进行的简单复制粘贴,这款工具增加了暂停和继续...

    基于C++开发的文件夹自动备份工具源码

    在IT领域,文件夹自动备份工具是至关重要的,尤其是在企业环境中,数据安全和一致性是不容忽视的。基于C++开发的文件夹自动备份工具源码提供了一种自定义且高效的方式来实现这一功能。C++是一种强大的编程语言,以其...

    文件夹自动备份工具+vb源代码

    【标题】"文件夹自动备份工具+vb源代码"涉及的核心知识点主要集中在VB(Visual Basic)编程语言上,以及...同时,这也为需要文件夹备份解决方案的用户提供了一个现成的工具,只需根据自己的需求进行适当的定制即可。

    C#写的文件夹备份

    标题“C#写的文件夹备份”表明我们讨论的是一个使用C#编程语言编写的程序,其功能是实现文件夹的备份。C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows应用程序、游戏开发以及服务器端应用等。在这个...

    数据库备份和文件夹备份

    - 选择备份工具:使用操作系统内置工具(如Windows的文件历史功能)或第三方备份软件。 - 定义备份计划:根据工作流程和文件更新频率设定备份时间。 - 设置备份目标:选择合适的存储位置,如外部硬盘、网络存储设备...

    邮件服务器手动备份程序-后台备份文件夹工具

    首先,我们来理解"文件夹备份"的概念。在邮件服务器中,文件夹通常按照组织结构或者用户账户来划分,每个文件夹可能包含多个用户的邮箱或者特定的邮件数据。此工具允许用户选择需要备份的具体文件夹,这样可以避免...

    多功能文件夹自动备份工具

    标题中的“多功能文件夹自动备份工具”指的是一个能够自动化完成文件和文件夹备份的应用程序,这类工具通常具备一系列高级功能,以确保用户的数据安全。它能够定期、自动地复制指定的文件或文件夹,以便在数据丢失或...

    windows下文件夹备份脚本(附详细说明)

    部署生产环境后,需要对用户的一些数据进行定期备份(如:把C盘下的doc文件夹备份到D盘目录下)。该工具为bat脚本,使用时只需要简单的改几个参数(备份的原始基目录、原始目录名、备份文件存放的目标文件夹、删除...

    单文件夹备份精灵

    "单文件夹备份精灵"是一款专为Windows XP和2003系统设计的轻量级备份工具,旨在简化用户对特定文件夹的备份操作。它提供了便捷的方式,帮助用户快速、高效地保护重要数据,避免因系统故障、硬件损坏或意外删除导致的...

    文件夹映射工具v2.0.rar

    总的来说,文件夹映射工具v2.0是一个实用的工具,它通过简化文件夹的管理和访问,提高了工作效率,特别是在多用户协作和数据备份方面提供了极大的便利。用户可以根据自身需求,利用这个工具优化文件组织和访问流程,...

    方配文件夹自动压缩备份工具

    《方配文件夹自动压缩备份工具:守护数据安全的得力助手》 在信息化社会,数据的重要性不言而喻,无论是个人的珍贵照片、工作文档,还是企业的核心资料,都需要得到妥善的保护。"方配文件夹自动压缩备份工具"正是...

    文件夹自动同步备份工具 Ver1.0

    《文件夹自动同步备份工具 Ver1.0》是一款旨在帮助用户实现文件夹内容实时或定期备份的实用软件。它能够确保您的重要数据在遭受意外损失时得到及时恢复,避免因硬件故障、病毒感染或其他不可预知因素导致的数据丢失...

    通过Data文件夹备份和还原实现Mysql数据库的备份以及还原

    本文将详细讲解如何通过Data文件夹备份和还原实现MySQL数据库的备份及恢复,这是一种简单直接的方法,尤其适合小型数据库或者开发测试环境。 首先,我们需要理解MySQL的数据存储结构。MySQL数据库的数据文件主要...

    局域网自动上传工具—备份好帮手

    在文件名称列表中,“局域网文件夹备份工具.exe”可能是这个工具的可执行程序。用户只需运行这个文件,按照向导设置目标服务器地址、选择需要备份的本地文件夹,以及定制备份计划,即可开始享受自动备份带来的便利。...

    windows文件夹修复工具

    5. **预防措施**:除了修复现有问题,该工具还可能提供一些预防性的建议,如定期进行磁盘检查、备份重要文件等,以减少未来可能出现的文件夹错误。 "FolderFix"这个文件名很可能就是这个修复工具的主程序。在使用时...

    电脑文件夹加密工具&文件夹保护

    "电脑文件夹加密工具&文件夹保护"的标题和描述正针对这一需求,提供了便捷的解决方案。 文件夹加密是一种技术手段,它通过特定的算法对文件或文件夹进行编码,使其在未经许可的情况下无法访问。这种加密过程使得...

Global site tag (gtag.js) - Google Analytics