import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.*;
import java.util.regex.Pattern;
public class FileUtil {
private static final Log LOG = LogFactory.getLog(FileUtil.class);
public static boolean delete(String f) {
try {
File file = new File(f);
file.delete();
return true;
} catch (Exception e) {
LOG.error("delete(String) String f:" + "f", e);
return false;
}
}
public static String read(String file) {
String ret = null;
File f = null;
BufferedInputStream result = null;
ByteArrayOutputStream baos = null;
try {
f = new File(file);
if (!f.exists()) {
if (LOG.isDebugEnabled()) {
LOG.debug(file + " does not exist.");
}
return ret;
} else if (!f.isFile()) {
// fix bug:判断是否是文件,如果是一个目录是很危险的
LOG.warn(file + " is not a file.");
return ret;
}
result = new BufferedInputStream(new FileInputStream(f));
baos = new ByteArrayOutputStream();
byte[] cont = new byte[1024];
int conlen;
while ((conlen = result.read(cont)) >= 0) {
baos.write(cont, 0, conlen);
}
ret = new String(baos.toByteArray());
} catch (Exception e) {
LOG.error("read(String) file:" + file, e);
} finally {
try {
if (result != null)
result.close();
if (baos != null)
baos.close();
f = null;
} catch (Exception e) {
LOG.error("read finally ", e);
}
}
return ret;
}
public static byte[] readBytes(String file) {
byte[] ret = null;
File f = null;
BufferedInputStream result = null;
ByteArrayOutputStream baos = null;
try {
f = new File(file);
if (!f.exists()) {
if (LOG.isDebugEnabled()) {
LOG.debug(file + " does not exist.");
}
return ret;
} else if (!f.isFile()) {
// fix bug:判断是否是文件,如果是一个目录是很危险的
LOG.warn(file + " is not a file.");
return ret;
}
result = new BufferedInputStream(new FileInputStream(f));
baos = new ByteArrayOutputStream();
byte[] cont = new byte[1024];
int conlen;
while ((conlen = result.read(cont)) >= 0) {
baos.write(cont, 0, conlen);
}
ret = (baos.toByteArray());
} catch (Exception e) {
LOG.error("read(String) file:" + file, e);
} finally {
try {
if (result != null)
result.close();
if (baos != null)
baos.close();
f = null;
} catch (Exception e) {
LOG.error("read finally ", e);
}
}
return ret;
}
public static boolean write(String content, String file) {
try {
return write(content, file, false);
} catch (Exception e) {
LOG.error("write(String,String) file=" + file + " ", e);
return false;
}
}
public static boolean write(byte[] content, String file) {
boolean ret = false;
FileOutputStream fos = null;
try {
File filedir = new File(getPath(file));
if (!filedir.exists())
filedir.mkdirs();
fos = new FileOutputStream(file);
fos.write(content);
ret = true;
} catch (Exception e) {
LOG.error("write(byte,String) file=" + file, e);
} finally {
try {
if (fos != null)
fos.close();
} catch (Exception e) {
LOG.error(e);
}
}
return ret;
}
public static boolean write(String content, String file, boolean append) {
boolean ret = false;
FileOutputStream fos = null;
try {
long t1 = System.currentTimeMillis();
File filedir = new File(getPath(file));
if (!filedir.exists())
filedir.mkdirs();
if(append)
fos = new FileOutputStream(file, append);
else
fos = new FileOutputStream(file);
fos.write(content.getBytes());
long t2 = System.currentTimeMillis();
ret = true;
} catch (Exception e) {
LOG.error("write(String,String,boolean) file=" + file, e);
return false;
} finally {
try {
if (fos != null)
fos.close();
} catch (Exception e) {
LOG.error(e);
}
}
return ret;
}
public static String getPath(String f) {
try {
return f.substring(0, f.lastIndexOf("/"));
} catch (Exception e) {
return "./";
}
}
public static String[] getFileList(String dir) {
try {
File parent = new File(dir);
if (!parent.isAbsolute() || !parent.isDirectory()) {
return null;
}
return parent.list();
} catch (Exception e) {
return null;
}
}
public static String[] getFileList(final String dir, final String pattern) {
try {
File parent = new File(dir);
if (!parent.isAbsolute() || !parent.isDirectory()) {
return null;
}
final Pattern namePattern = Pattern.compile(pattern);
return parent.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
if (namePattern.matcher(name).matches()) {
return true;
} else {
return false;
}
}
});
} catch (Throwable te) {
LOG.error("getFileList[dir=" + dir + ",pattern=" + pattern
+ "]error.", te);
return null;
}
}
}