`
zhijin
  • 浏览: 76004 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

File Util 类

 
阅读更多
package com.nexaweb.vbtoxal.file;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import info.monitorenter.cpdetector.io.*;

import org.apache.log4j.Logger;

/**
 * File utils. Read, write, copy files, search file recursively and so on.
 * 
 * @author zyao
 * 
 */
public class FileManager {
	private Logger log = Logger.getLogger(FileManager.class);
	ArrayList<File> flisList = new ArrayList<File>();
	// Create the proxy:
	CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance(); // A
																			// singleton.

	/**
	 * 删除文件,可以是单个文件或文件夹
	 * 
	 * @param fileName
	 *            待删除的文件名
	 * @return 文件删除成功返回true,否则返回false
	 */
	public static boolean delete(String fileName) {
		File file = new File(fileName);
		if (!file.exists()) {
			System.out.println("删除文件失败:" + fileName + "文件不存在");
			return false;
		} else {
			if (file.isFile()) {

				return deleteFile(fileName);
			} else {
				return deleteDirectory(fileName);
			}
		}
	}

	/**
	 * 删除单个文件
	 * 
	 * @param fileName
	 *            被删除文件的文件名
	 * @return 单个文件删除成功返回true,否则返回false
	 */
	public static boolean deleteFile(String fileName) {
		File file = new File(fileName);
		if (file.isFile() && file.exists()) {
			file.delete();
			System.out.println("删除单个文件" + fileName + "成功!");
			return true;
		} else {
			System.out.println("删除单个文件" + fileName + "失败!");
			return false;
		}
	}

	/**
	 * 删除目录(文件夹)以及目录下的文件
	 * 
	 * @param dir
	 *            被删除目录的文件路径
	 * @return 目录删除成功返回true,否则返回false
	 */
	public static boolean deleteDirectory(String dir) {
		// 如果dir不以文件分隔符结尾,自动添加文件分隔符
		if (!dir.endsWith(File.separator)) {
			dir = dir + File.separator;
		}
		File dirFile = new File(dir);
		// 如果dir对应的文件不存在,或者不是一个目录,则退出
		if (!dirFile.exists() || !dirFile.isDirectory()) {
			System.out.println("删除目录失败" + dir + "目录不存在!");
			return false;
		}
		boolean flag = true;
		// 删除文件夹下的所有文件(包括子目录)
		File[] files = dirFile.listFiles();
		for (int i = 0; i < files.length; i++) {
			// 删除子文件
			if (files[i].isFile()) {
				flag = deleteFile(files[i].getAbsolutePath());
				if (!flag) {
					break;
				}
			}
			// 删除子目录
			else {
				flag = deleteDirectory(files[i].getAbsolutePath());
				if (!flag) {
					break;
				}
			}
		}

		if (!flag) {
			System.out.println("删除目录失败");
			return false;
		}

		// 删除当前目录
		if (dirFile.delete()) {
			System.out.println("删除目录" + dir + "成功!");
			return true;
		} else {
			System.out.println("删除目录" + dir + "失败!");
			return false;
		}
	}

	public List<File> getFileListByExtension(String fileDir, String extension)
			throws Exception {

		// Make sure the directory exists
		File dir = new File(fileDir);
		if (!dir.exists()) {
			throw new Exception("Invalid Dir " + fileDir);
		}

		// Use FileFilter to get only extension files
		FileFilter filter = new FileExtensionFileFilter("." + extension);

		File[] currenFiles = dir.listFiles(filter);
		for (int j = 0; j < currenFiles.length; j++) {
			File f = currenFiles[j];
			if (f.isFile()) {
				flisList.add(f);
			}
		}

		File[] files = dir.listFiles();

		// Iterate through the files found
		for (int i = 0; i < files.length; i++) {
			File file = files[i];
			if (!file.isFile()) {
				getFileListByExtension(file.getAbsolutePath(), extension);
			}
		}

		return flisList;
	}

	public FileManager() {
		// Add the implementations of
		// info.monitorenter.cpdetector.io.ICodepageDetector:
		// This one is quick if we deal with unicode codepages:
		detector.add(new ByteOrderMarkDetector());
		// This one does the tricks of exclusion and frequency detection, if
		// first implementation is
		// unsuccessful:
		detector.add(JChardetFacade.getInstance()); // Another singleton.
		detector.add(ASCIIDetector.getInstance()); // Fallback, see javadoc.
		// UnicodeDetector
		detector.add(UnicodeDetector.getInstance());

	}

	public String readFile(File file) {
		StringBuffer sb = new StringBuffer();
		try {
			// BufferedReader br = new BufferedReader(new FileReader(file));
			// new InputStreamReader(new FileInputStream(fileName),"UTF-8")
			// fix garbled
			// BufferedReader br = new BufferedReader(new InputStreamReader(new
			// FileInputStream(file),"UTF-8"));
			java.nio.charset.Charset charset = null;
			charset = detector.detectCodepage(file.toURL());

			BufferedReader br = new BufferedReader(new InputStreamReader(
					new FileInputStream(file), charset));
			String lineText = br.readLine();

			while (lineText != null) {
				sb = sb.append(lineText + "\n");
				lineText = br.readLine();
			}

		} catch (Exception e) {

		}
		return sb.toString();
	}

	public void copyAllFilesByExtension(String sourceDir, String targetDir,
			String extension) throws Exception {
		String keep = sourceDir;
		copyAllFilesByExtension(keep, sourceDir, targetDir, extension);
	}

	public void copyAllFilesByExtension(String keep, String sourceDir,
			String targetDir, String extension) throws Exception {
		// Make sure the directory exists
		File dir = new File(sourceDir);
		if (!dir.exists()) {
			throw new Exception("Invalid Dir " + sourceDir);
		}

		// Use FileFilter to get only extension files
		FileFilter filter = new FileExtensionFileFilter("." + extension);

		File[] currenFiles = dir.listFiles(filter);
		for (int j = 0; j < currenFiles.length; j++) {
			File f = currenFiles[j];
			File aFile = f.getAbsoluteFile();
			// CopyFile(f.getAbsolutePath(),
			// targetDir+File.separator+aFile.getName());
			String su = f.getAbsolutePath();
			String au = su.substring(keep.length());
			CopyFile(f.getAbsolutePath(), targetDir + File.separator + au);
		}

		File[] files = dir.listFiles();

		// Iterate through the files found
		for (int i = 0; i < files.length; i++) {
			File file = files[i];
			if (!file.isFile()) {
				copyAllFilesByExtension(keep, file.getAbsolutePath(),
						targetDir, extension);
			}
		}
	}

	public void CopyFile(String source, String taget) {
		try {
			FileInputStream input = new FileInputStream(source);
			File dir = new File(taget.substring(0, taget
					.lastIndexOf(File.separator)));
			if (!dir.exists()) {
				dir.mkdirs();
			}
			FileOutputStream output = new FileOutputStream(taget);

			// int in = input.read();
			// while (in != -1) {
			// output.write(in);
			// in = input.read();
			// }
			int bytesRead;
			byte[] buf = new byte[4 * 1024]; // 4K buffer
			while ((bytesRead = input.read(buf)) != -1) {
				output.write(buf, 0, bytesRead);
			}
			output.flush();
			output.close();
			input.close();
		} catch (IOException e) {
			System.out.println(e.toString());
		}

	}

	public static void main(String[] args) {
		// Make sure the directory exists
		String dirName = "D:\\VB\\ICU\\source";
		FileManager fm = new FileManager();
		try {
			// fm.listFile(dirName);
			List<File> fl = fm.getFileListByExtension(dirName, "frm");
			fm.readFile(fl.get(0));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
 
分享到:
评论

相关推荐

    C# Util 实用工具类

    C# Util中的Json工具类通常提供了序列化和反序列化JSON对象的方法,如将C#对象转换为JSON字符串,或者将JSON字符串解析为C#对象,这在处理API请求或保存配置文件时非常有用。 2. **Net**: 这部分可能包含网络通信...

    Java常用Util类

    Java中的Util类是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地完成日常编程任务。在Java中,Util类通常包含了各种通用功能,如集合操作、日期时间处理、字符串处理等。以下是一些Java...

    Java常用工具类UtilClass

    在Java编程中,工具类(Util Class)是包含各种实用函数的静态类,它们提供了一种简化常见任务的方法。在给定的`UtilClass`中,我们有五个主要的工具类:`StringUtil`、`FileUtil`、`ConnectDB`、`DateUtil`和`...

    java常用util工具类

    Java中的`util`工具类是Java Standard Edition (Java SE)库中的重要组成部分,它们提供了许多实用功能,极大地简化了开发工作。在这个主题中,我们将深入探讨`StringUtil`、`FileUtil`、`MD5`、`JsonUtil`以及`...

    file_util.py

    file_util.py

    cw-util-file-encryptdecrypt.rar

    本篇将详细解读一个名为“cw-util-file-encryptdecrypt.rar”的自开发文件加密解密工具,它采用了当前广泛使用的加密解密方法,适用于各类项目集成,并附带了具体的测试方案,旨在为用户提供高效且安全的数据保护...

    利用File类的方法,获得某已有文件的最后修改时间.docx

    我们可以使用`java.io.File`类提供的方法来实现这一功能。以下是对标题和描述中涉及的知识点的详细说明: ### 文件类(File)介绍 `File`类是Java I/O系统的基础,它用于表示文件和目录路径名。`File`对象可以代表...

    java中的File类

    Java中的`File`类是Java.io包中的核心类,它提供了在操作系统级别操作文件和目录的能力。`File`类主要用于文件和目录路径名的表示和操作,而不涉及文件的读写。下面我们将深入探讨`File`类的主要特性和常用方法。 1...

    C#工具类BitVector CookieUtil DES FileUtil HttpUtil ImageFile JavaScriptString JsonHelper StringUtil Thumbnail Utils WebFileInfo

    BitVector CookieUtil DES FileUtil HttpUtil ImageFile JavaScriptString JsonHelper StringUtil Thumbnail Utils WebFileInfo

    File工具类

    Java 8引入了`java.util.Base64`工具类,使得Base64编码和解码变得非常方便: ```java Base64.Encoder encoder = Base64.getEncoder(); String encoded = encoder.encodeToString(binaryData); Base64.Decoder ...

    Java常用Util类Jar

    在Java中,`java.util` 包是最基础也是最常用的工具类集合,而"Java常用Util类Jar"则是一个包含了更多自定义或者网络上流行实用工具类的集合,适用于Web项目的快速开发。 这个压缩包中的`ZycUtil`可能是一个自定义...

    MD5Util.zip

    2. **文件MD5校验**:对于大文件,MD5Util可能还包含一个方法,如`calculateFileMD5(File file)`,用于计算文件的MD5值。这个过程涉及到读取文件内容并分块计算,最后将所有块的MD5值合并得到整个文件的MD5摘要。 3...

    TreeFile.txt

    * 类名称:TreeFile * 类描述:将制定目录下得所有子目录和文件按树形输出 * 创建时间:2011-10-19 下午8:22:40 * 修改时间:2011-10-19 下午8:22:40 * 修改备注: * @version * */ public class TreeFile...

    JAVA课件 swing io util

    例如,你可能会创建一个Swing GUI,让用户选择文件,然后使用IO API读取或写入文件,同时利用Util类进行数据处理。例如,可以使用`java.nio.file.Files`类的readAllBytes()方法读取整个文件到字节数组,或者使用`...

    util.zip_util

    在`util.zip_util`中,我们可以预期它包含了一系列函数或类,这些功能可能包括: 1. **压缩文件/目录**:`zip_util`可能有一个或多个函数,如`compress_file`或`compress_directory`,用于将单个文件或整个目录压缩...

    java常用工具类封装util.rar

    在Java编程中,工具类(Util)是一种常见的设计模式,用于封装一组静态方法,这些方法在各种场景下都能被重复使用。"java常用工具类封装util.rar"这个压缩包文件很可能包含了开发者为了提高代码复用性和简洁性而编写...

    net.mindview.util.jar

    而`TextFile`类则可能封装了读取、写入和处理文本文件的逻辑,简化了文件操作。 `Print`类在Java编程中是相当常见的,它通常会提供比标准`System.out.println()`更高级的输出功能,例如支持自定义格式、颜色、甚至...

    Base64Util、FileUtil、GsonUtils、HttpUtil

    在Java开发中,工具类(Util)扮演着重要的角色,它们提供了一系列静态方法,使得开发者可以方便地处理特定任务,而无需每次都创建新的对象。在给出的标题和描述中,我们涉及了四个关键的工具类:Base64Util、...

Global site tag (gtag.js) - Google Analytics