文件工具类FileUtil
/*
* FileUtil.java
* Copyright (C) 2007-3-19 <[email protected]>
*
* 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 <[email protected]>
* @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 ;
}
}
}
* FileUtil.java
* Copyright (C) 2007-3-19 <[email protected]>
*
* 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 <[email protected]>
* @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 ;
}
}
}