首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

资料工具类FileUtil

2012-10-17 
文件工具类FileUtil./*?*?FileUtil.java?*?Copyright?(C)?2007-3-19??JustinLei@gmail.com?*?*????????T

文件工具类FileUtil.

/*
?*?FileUtil.java
?*?Copyright?(C)?2007-3-19??<JustinLei@gmail.com>
?*
?*????????This?program?is?free?software;?you?can?redistribute?it?and/or?modify
?*????????it?under?the?terms?of?the?GNU?General?Public?License?as?published?by
?*??????the?Free?Software?Foundation;?either?version?2?of?the?License,?or
?*?????(at?your?option)?any?later?version.
?*
?*???????This?program?is?distributed?in?the?hope?that?it?will?be?useful,
?*??????but?WITHOUT?ANY?WARRANTY;?without?even?the?implied?warranty?of
?*?????MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.??See?the
?*????????GNU?General?Public?License?for?more?details.
?*
?*/
package?org.lambdasoft.utils;

import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.FileReader;
import?java.io.InputStream;
import?java.util.Date;
import?java.util.HashMap;
import?java.util.Map;
import?java.util.Properties;
import?java.util.Random;
import?java.util.Set;

import?org.apache.commons.logging.Log;
import?org.apache.commons.logging.LogFactory;

/**
?*?文件工具类
?*?
?*?@author?TangLei?<justinlei@gmail.com>
?*?@date?2009-2-24
?*/
public?class?FileUtil?{
????private?static?Log?log?=?LogFactory.getLog(FileUtil.class);
????private?FileUtil()?{}
????
????/**
?????*?获取随机的文件名称
?????*?@param?seed????随机种子
?????*?@return
?????*/
????public?static?String?getRandomFileName(String?seed)?{
????????byte[]?ra?=?new?byte[100];
????????new?Random().nextBytes(ra);
????????StringBuilder?build?=?new?StringBuilder("");
????????for?(int?i?=?0;?i?<?ra.length;?i++)?{
????????????build.append(Byte.valueOf(ra[i]).toString());
????????}
????????String?currentDate?=?Long.valueOf(new?Date().getTime()).toString();
????????seed?=?seed?+?currentDate?+?build.toString();
????????return?EncryptUtils.getMD5ofStr(seed).toLowerCase();
????}
????
????/**
?????*?列出所有当前层的文件和目录
?????*?
?????*?@param?dir????????????目录名称
?????*?@return?fileList????列出的文件和目录
?????*/
????public?static?File[]?ls(String?dir)?{
????????return?new?File(dir).listFiles();
????}
????
????/**
?????*?根据需要创建文件夹
?????*?
?????*?@param?dirPath?文件夹路径
?????*?@param?del????存在文件夹是否删除
?????*/
????public?static?void?mkdir(String?dirPath,boolean?del)?{
????????File?dir?=?new?File(dirPath);
????????if(dir.exists())?{
????????????if(del)
????????????????dir.delete();
????????????else?return;
????????}
????????dir.mkdirs();
????}
????
????/**
?????*?删除文件和目录
?????*?
?????*?@param?path
?????*?@throws?Exception
?????*/
????public?static?void?rm(String?path)?throws?Exception{
????????if(log.isDebugEnabled())
????????????log.debug("需要删除的文件:?"?+?path);
????????File?file?=?new?File(path);
????????if(!file.exists())?{
????????????if(log.isWarnEnabled())
????????????????log.warn("文件<"?+?path?+?">不存在");
????????????return;
????????}
????????if(file.isDirectory())?{
????????????File[]?fileList?=?file.listFiles();
????????????if(fileList?==?null?||?fileList.length?==?0)?{
????????????????file.delete();
????????????}?else?{
????????????????for?(File?_file?:?fileList)?{
????????????????????rm(_file.getAbsolutePath());
????????????????}
????????????}
????????file.delete();
????????}?else?{
????????????file.delete();
????????}
????}
????
????/**
?????*?移动文件
?????*?
?????*?@param?source?????源文件
?????*?@param?target?????????目标文件
?????*?@param?cache????????文件缓存大小
?????*?@throws?Exception
?????*/
????public?static?void?mv(String?source,String?target,int?cache)?throws?Exception?{
????????if(source.trim().equals(target.trim()))
????????????return;
????????byte[]?cached?=?new?byte[cache];
????????FileInputStream?fromFile?=?new?FileInputStream(source);
????????FileOutputStream?toFile?=?new?FileOutputStream(target);
????????while(fromFile.read(cached)?!=?-1)?{
????????????toFile.write(cached);
????????}
????????toFile.flush();
????????toFile.close();
????????fromFile.close();
????????new?File(source).deleteOnExit();
????}
????
????/**
?????*?把属性文件转换成Map
?????*?
?????*?@param?propertiesFile
?????*?@return
?????*?@throws?Exception
?????*/
????public?static?final?Map<String,?String>?getPropertiesMap(String?propertiesFile)?throws?Exception{
????????Properties?properties?=?new?Properties();
????????FileInputStream?inputStream?=?new?FileInputStream(propertiesFile);
????????properties.load(inputStream);
????????Map<String,?String>?map?=?new?HashMap<String,?String>();
????????Set<Object>?keySet?=?properties.keySet();
????????for?(Object?key?:?keySet)?{
????????????map.put((String)key,?properties.getProperty((String)key));
????????}
????????return?map;
????}
????
????@SuppressWarnings("unchecked")
????public?static?final?Map<String,?String>?getPropertiesMap(Class?clazz,String?fileName)?throws?Exception{
????????Properties?properties?=?new?Properties();
????????InputStream?inputStream?=?clazz.getResourceAsStream(fileName);
????????if(inputStream?==?null)
????????????inputStream?=?clazz.getClassLoader().getResourceAsStream(fileName);
????????properties.load(inputStream);
????????Map<String,?String>?map?=?new?HashMap<String,?String>();
????????Set<Object>?keySet?=?properties.keySet();
????????for?(Object?key?:?keySet)?{
????????????map.put((String)key,?properties.getProperty((String)key));
????????}
????????return?map;
????}
????
????/**
?????*?把属性文件转换成Map
?????*?
?????*?@param?inputStream
?????*?@return
?????*?@throws?Exception
?????*/
????public?static?final?Map<String,?String>?getPropertiesMap(InputStream?inputStream)?throws?Exception{
????????Properties?properties?=?new?Properties();
????????properties.load(inputStream);
????????Map<String,?String>?map?=?new?HashMap<String,?String>();
????????Set<Object>?keySet?=?properties.keySet();
????????for?(Object?key?:?keySet)?{
????????????map.put((String)key,?properties.getProperty((String)key));
????????}
????????return?map;
????}
????
????/**
?????*?把文本文件转换成String
?????*?
?????*?@param?fullPath
?????*?@return
?????*?@throws?Exception
?????*/
????public?static?String?readFile(String?fullPath)?throws?Exception{
????????BufferedReader?reader?=?new?BufferedReader(new?FileReader(fullPath));
????????if(reader?==?null)
????????????return?null;
????????StringBuilder?builder?=?new?StringBuilder("");
????????String?line?=?null;
????????while((line?=?reader.readLine())?!=?null)?{
????????????builder.append(line?+?"\n");
????????}
????????return?builder.toString();
????}
????
????/**
?????*?获取资源文件流
?????*?
?????*?@param?clazz
?????*?@param?name
?????*?@return
?????*/
????@SuppressWarnings("unchecked")
????public?static?InputStream?getResourceAsStream(Class?clazz,String?name)?{
????????try?{
????????????InputStream?inputStream?=?clazz.getResourceAsStream(name);
????????????if(inputStream?==?null)?
????????????????inputStream?=?clazz.getClassLoader().getResourceAsStream(name);
????????????return?inputStream;
????????}?catch?(Exception?e)?{
????????????if(log.isWarnEnabled())
????????????????log.warn("获取资源文件失败",?e);
????????????return?null;
????????}
????}
}

热点排行