`
黑暗浪子
  • 浏览: 502675 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

今天整理硬盘时候发现一个自己三年前写的文件操作类

阅读更多
package util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;

public class FileUtil {
	private final static String FILE_SUFFIX = ".java.drl";

	private final static String FILE_TEMP = "C:/temp/";

	/**
	 * 将已存在的drl文件删除
	 * 
	 * @param ObjectPath
	 */
	public static void deleteExistedDRLFile(String ObjectPath) {
		File filePath = new File(ObjectPath);
		if (!filePath.exists()) {
			System.out.println("目录不存在!");
		} else {
			if (filePath.isDirectory()) {
				File[] list = filePath.listFiles(new FilenameFilter() {
					public boolean accept(File dir, String name) {
						return name.endsWith(FILE_SUFFIX);
					}
				});
				for (int i = 0; i < list.length; i++) {
					list[i].delete();
				}
			}
		}
	}

	/**
	 * 创建文件夹,如果有则不创建
	 * 
	 * @param ObjectPath
	 */
	public static boolean creareDirectory(String ObjectPath) {
		boolean flag = true;

		File filePath = new File(ObjectPath);
		if (!filePath.exists()) {
			filePath.mkdir();
			flag = false;
		}

		return flag;
	}

	/**
	 * 查看某文件夹下面是否有文件,有文件则创建一个temp文件夹,将文件拷贝到temp目录下(备份文件) 没有文件怎什么都不做
	 * 备份后,把原文件夹里文件删除
	 * 
	 * @param ObjectPath
	 */
	public static void backupFile(String ObjectPath, String dirName) {
		String backupPath;

		if (!FILE_TEMP.endsWith(File.separator)) {
			backupPath = FILE_TEMP + File.separator + dirName;
		} else {
			backupPath = FILE_TEMP + dirName;
		}

		File backupFilePath = new File(backupPath);
		if (!backupFilePath.exists()) {
			backupFilePath.mkdirs();
		}
		File filePath = new File(ObjectPath);
		if (!filePath.exists()) {
			System.out.println("目录不存在!");
		} else {
			if (filePath.isDirectory()) {
				File[] list = filePath.listFiles();
				if (list != null && list.length != 0) {
					copyFolder(ObjectPath, backupPath);// 文件备份
					for (int i = 0; i < list.length; i++) {
						list[i].delete();
					}
				}
			}
		}
	}

	/**
	 * 复原文件,把文件从备份文件夹拷贝到原来文件夹
	 * 
	 * @param ObjectPath
	 * @param dirName
	 */
	public static void recoverFile(String ObjectPath, String dirName) {
		String backupPath;
		if (ObjectPath.endsWith(File.separator)) {
			ObjectPath = new StringBuffer(ObjectPath).append(dirName)
					.toString();
		} else {
			ObjectPath = new StringBuffer(ObjectPath)
					.append(File.separatorChar).append(dirName).toString();
		}

		if (!FILE_TEMP.endsWith(File.separator)) {
			backupPath = FILE_TEMP + File.separator + dirName;
		} else {
			backupPath = FILE_TEMP + dirName;
		}
		File backupFilePath = new File(backupPath);
		if (!backupFilePath.exists()) {
			backupFilePath.mkdirs();
		}
		File filePath = new File(ObjectPath);
		if (!filePath.exists()) {
			System.out.println("目录不存在!");
		} else {
			if (filePath.isDirectory()) {
				File[] list = filePath.listFiles();
				if (list != null && list.length != 0) {
					copyFolder(backupPath, ObjectPath);// 文件复原
				}
			}
		}
	}

	/**
	 * 复制整个文件夹内容
	 * 
	 * @param oldPath
	 *            String 原文件路径 如:c:/fqf
	 * @param newPath
	 *            String 复制后路径 如:f:/fqf/ff
	 * @return boolean
	 */
	public static void copyFolder(String oldPath, String newPath) {
		try {
			(new File(newPath)).mkdir(); // 如果文件夹不存在 则建立新文件夹
			File a = new File(oldPath);
			String[] file = a.list();
			File temp = null;
			for (int i = 0; i < file.length; i++) {
				if (oldPath.endsWith(File.separator)) {
					temp = new File(oldPath + file[i]);
				} else {
					temp = new File(oldPath + File.separator + file[i]);
				}

				if (temp.isFile()) {
					FileInputStream input = new FileInputStream(temp);
					FileOutputStream output = new FileOutputStream(newPath
							+ "/" + (temp.getName()).toString());

					byte[] b = new byte[1024 * 5];
					int len;
					while ((len = input.read(b)) != -1) {
						output.write(b, 0, len);
					}
					output.flush();
					output.close();
					input.close();
				}
				if (temp.isDirectory()) {// 如果是子文件夹
					copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
				}
			}
		} catch (Exception e) {
			System.out.println("复制整个文件夹内容操作出错");
			e.printStackTrace();
		}
	}

	/**
	 * 删除备份文件和存放备份文件的文件夹
	 * 
	 * @param ObjectPath
	 */
	public static void deleteFileAndDirectory(String dirName) {
		String ObjectPath;
		if (!FILE_TEMP.endsWith(File.separator)) {
			ObjectPath = FILE_TEMP + File.separator + dirName;
		} else {
			ObjectPath = FILE_TEMP + dirName;
		}

		File filePath = new File(ObjectPath);
		if (!filePath.exists()) {
			filePath.mkdirs();
			System.out.println("目录不存在!");
		} else {
			if (filePath.isDirectory()) {
				File[] list = filePath.listFiles();

				for (int i = 0; i < list.length; i++) {
					list[i].delete();
				}
			}
			filePath.delete();
		}
	}

	/**
	 * 判断某文件夹下是否存在文件,存在返回true
	 * 
	 * @param ObjectPath
	 * @return
	 */
	public static boolean existFileInDirectory(String ObjectPath) {
		boolean flag = false;
		File filePath = new File(ObjectPath);
		if (filePath.exists()) {

			if (filePath.isDirectory()) {
				File[] list = filePath.listFiles();
				if (list != null && list.length != 0) {
					flag = true;
				}
			}
		}

		return flag;
	}

	/**
	 * 删除某个文件夹
	 * @param ObjectPath
	 */
	public static void deleteDirectory(String ObjectPath) {

		File filePath = new File(ObjectPath);
		if (filePath.exists()) {
			filePath.delete();
		}
	}
	/**
	 * 将已存在的文件删除
	 * 
	 * @param ObjectPath
	 */
	public static boolean deleteExistedFile(String ObjectPath,final String fileName) {
		boolean flag =false;
		File filePath = new File(ObjectPath);
		if (filePath.exists()) {			
			if (filePath.isDirectory()) {
				File[] list = filePath.listFiles(new FilenameFilter() {
					public boolean accept(File dir, String name) {
						return name.equals(fileName);
					}
				});
				for (int i = 0; i < list.length; i++) {
					list[i].delete();
				}
				flag=true;
			}
		}
		
		return flag;
	}
}
 
3
2
分享到:
评论
2 楼 黑暗浪子 2010-12-15  
kyfxbl 写道
这破玩意弄上来干什么

你这破玩意到我这里来干啥?犯贱?
1 楼 kyfxbl 2010-12-15  
这破玩意弄上来干什么

相关推荐

    自己动手写操作系统(含源代码).part2

    在我写作《自己动手写操作系统》的时候,并没有想过今天会有一个第二版。原因在于,我希望这本书是用来填补空白的,而不是重复去做别人已经做得很好的事情。所谓填补空白,具体说就是让像我一样的操作系统爱好者在...

    自己动手写操作系统(含源代码).part1

    在我写作《自己动手写操作系统》的时候,并没有想过今天会有一个第二版。原因在于,我希望这本书是用来填补空白的,而不是重复去做别人已经做得很好的事情。所谓填补空白,具体说就是让像我一样的操作系统爱好者在...

    网管教程 从入门到精通软件篇.txt

    Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...

    计算机应用技术(实用手册)

    后面是IDE设备的类型和硬件参数,TYPE用来说明硬盘设备的类型,我们可以选择AUTO、USER、NONE的工作模式,AUTO是由系统自己检测硬盘类型,在系统中存储了1-45类硬盘参数,在使用该设置值时不必再设置其它参数;...

    PinPKM-V201525(官网发布的最后一个免费无使用限制版本)

    7.支持近三天、近一个月、阅读次数、日期视图、问答学习等来复习收藏的资料为自己的知识 8.支持用Word来收集网页,这是PinPKM 的独门武功 9.知识库的容量仅受硬盘大小限制,采用分散文档保存来确保文档不受损 10....

    会计理论考试题

    23.如果要把C盘某个文件夹中的一些文件复制到C盘的另外一个文件央中,在选定文件后,若采用拖放操作,可以用___B___目标的方法。 A、直接拖至 B、Ctrl十拖至 C、Alt十拖至 D、单击 24.Windows98中的磁盘的根文件夹是...

    针式PinPKM-V201506(免费无使用限制)

    7.支持近三天、近一个月、阅读次数、日期视图、问答学习等来复习收藏的资料为自己的知识 8.支持用Word来收集网页,这是PinPKM 的独门武功 9.知识库的容量仅受硬盘大小限制,采用分散文档保存来确保文档不受损 10....

    计算机应用基础知识点总结.doc

    数据库管理系统DBMS〔DataBase Management System是数据库系统的核心,由一组用以管理、维护和访问数据的程序构成,提供了一个 可以方便地、有效地存取数据库信息的环境。 15、计算机组成由五部分组成 主机、显示器、...

    课题:计算机网络安全与防范.doc

    课题:计算机网络安全与防范 一、教学目的 通过本章节学习,让学生了解一般... 8、是对于经常使用P2P类下载软件(如BT)的用户,推荐每个月整理一下磁盘碎片,只 要不是频繁地整理碎片是不会对硬盘造成伤害的,另外,注意

    摄影技巧大汇总 摄影原理 相机操作 拍摄技巧 思维导图.png

    然后,查看英文界面发现乃session一词,就是允许用户直接访问硬盘上的图像文件并对其直接操作的意思。 这个功能是C1与LR的最大不同之一,用LR时,不导入就无法对图像进行编辑调整,而C1用户则可在会话的...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站...

    针式PinPKM-V2013(2013版)

    7.支持近三天、近一个月、阅读次数、日期视图、问答学习等来复习收藏的资料为自己的知识 8.支持用Word来收集网页,这是PinPKM 的独门武功 9.知识库的容量仅受硬盘大小限制,采用分散文档保存来确保文档不受损 10....

    基于J2EE框架的个人博客系统项目毕业设计论...

    这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站...

    易语言程序免安装版下载

    操作系统界面功能支持库(shell.fne)中的“执行()”命令增加一个参数“窗口显示方式”,作用与核心库“运行()”命令的同名参数一致。 6. 数据库操作支持库增加读写长整数字段的功能,但受限于系统接口暂不能读写...

    VB课程设计俄罗斯方块

    方块的造型在旋转的时候存在一个公式,当然首先要判断是否满足旋转的要求,以上是一个长条型由横着变成竖立状态的旋转,我们以它的造型中的第三个小方块n(3)为中心旋转,这样,在开始运动的时候,长条形要发生旋转...

    中通2008通信概预算编制系统v3.4.10_WinXp版_setup

    o)记忆菜单,能记住最近用过的5个文件。环境记忆:新建工程能记住上次工程的设置。 p)具备分项工程汇总功能。 q)外挂我的(自定义Excel)材料库。 r)丰富的资料查询,详细的帮助文件。 s)文件备份与恢复。 三、 ...

    中通2008通信概预算编制系统v3.4.10_WinXp版_setup.zip

    o)记忆菜单,能记住最近用过的5个文件。环境记忆:新建工程能记住上次工程的设置。 p)具备分项工程汇总功能。 q)外挂我的(自定义Excel)材料库。 r)丰富的资料查询,详细的帮助文件。 s)文件备份与恢复。 三、 ...

    中通2008—2012通信概预算编制系统_v4.1.0_Winxp_setup

    o)记忆菜单,能记住最近用过的5个文件。环境记忆:新建工程能记住上次工程的设置。 p)具备分项工程汇总功能。 q)外挂我的(自定义Excel)材料库。 r)丰富的资料查询,详细的帮助文件。 s)文件备份与恢复。 三、 ...

Global site tag (gtag.js) - Google Analytics