java file 工具类 过滤 文件_java文件操作工具类FileUtils

package cloud.simple.service.util;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import org.apache.commons.lang.StringUtils;

/****

* 文件操作类

* @version 1.0

*/

public class FileUtils extends org.apache.commons.io.FileUtils {

private static final int BUFFER_SIZE = 16 * 1024;

private static final long IMG_MAX_SIZE = 2 * 1024;

private static final String[] vidExt = new String[] { "rm", "rmvb", "mov",

"mtv", "dat", "wmv", "avi", "3gp", "amv", "dmv" };

private static final String[] imgExt = new String[] { "bmp", "png", "gif",

"jpeg", "jpg" };

private static final String[] docExt = new String[] { "doc", "docx" };

/**

* 删除指定目录下的所有文件

*

* @param folderPath

* 目录路径

* @return true:删除成功 false:删除失败

*/

public static boolean delAllFile(String folderPath) {

boolean flag = false;

File file = new File(folderPath);

if (!file.exists()) {

return flag;

}

if (!file.isDirectory()) {

return flag;

}

String[] tempList = file.list();

File temp = null;

for (int i = 0; i < tempList.length; i++) {

if (folderPath.endsWith(File.separator)) {

temp = new File(folderPath + tempList[i]);

} else {

temp = new File(folderPath + File.separator + tempList[i]);

}

if (temp.isFile()) {

temp.delete();

}

if (temp.isDirectory()) {

delAllFile(folderPath + "/" + tempList[i]);// 先删除文件夹里面的文件

delFolder(folderPath + "/" + tempList[i]);// 再删除空文件夹

flag = true;

}

}

return flag;

}

/**

* 删除指定文件

*

* @param filePath

* 指定文件的路径

* @return true:删除成功 false:删除失败

*/

public static boolean delFile(String filePath) {

boolean flag = false;

File file = new File(filePath);

if (!file.exists()) {

return flag;

}

flag = (new File(filePath)).delete();

return flag;

}

/**

* 删除指定文件夹(包括文件夹下的所有文件)

*

* @param folderPath

* 指定文件夹路径

* @return true:删除成功 false:删除失败

*/

public static boolean delFolder(String folderPath) {

try {

delAllFile(folderPath); // 删除完里面所有内容

String filePath = folderPath;

filePath = filePath.toString();

java.io.File myFilePath = new java.io.File(filePath);

myFilePath.delete(); // 删除空文件夹

} catch (Exception e) {

e.printStackTrace();

return false;

}

return true;

}

/**

* 读取文本文件的内容

*

* @param curfile

* 文本文件路径

* @return 返回文件内容

*/

public static String readFile(String curfile) {

File f = new File(curfile);

try {

if (!f.exists())

throw new Exception();

FileReader cf = new FileReader(curfile);

BufferedReader is = new BufferedReader(cf);

StringBuilder filecontent = new StringBuilder("");

String str = is.readLine();

while (str != null) {

filecontent.append(str);

str = is.readLine();

if (str != null)

filecontent.append(System.getProperty("line.separator","\n"));

}

is.close();

cf.close();

return filecontent.toString();

} catch (Exception e) {

System.err.println("不能读属性文件: " + curfile + " \n" + e.getMessage());

return "";

}

}

/**

* 取指定文件的扩展名

*

* @param filePathName

* 文件路径

* @return 扩展名

*/

public static String getFileExt(String filePathName) {

int pos = 0;

pos = filePathName.lastIndexOf('.');

if (pos != -1)

return filePathName.substring(pos + 1, filePathName.length());

else

return "";

}

/**

* 读取文件大小

*

* @param filename

* 指定文件路径

* @return 文件大小

*/

public static int getFileSize(String filename) {

try {

File fl = new File(filename);

int length = (int) fl.length();

return length;

} catch (Exception e) {

return 0;

}

}

/**

* 文件拷贝

*

* @param src

* 源文件

* @param dst

* 目标文件

* @param delete

* 是否删除源文件

*/

public static void copyFile(File src, File dst, boolean delete) {

try {

InputStream in = null;

OutputStream out = null;

try {

in = new BufferedInputStream(new FileInputStream(src),

BUFFER_SIZE);

out = new BufferedOutputStream(new FileOutputStream(dst),

BUFFER_SIZE);

byte[] buffer = new byte[BUFFER_SIZE];

int n = 0;

while ((n = in.read(buffer)) > 0) {

out.write(buffer,0,n);

}

} finally {

if (null != in) {

in.close();

}

if (null != out) {

out.close();

}

}

if (delete)

src.delete();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 获取源文件类型

*

* @param ext

* @return

*/

public static String getSourceFileType(String ext) {

for (String img : imgExt) {

if (ext.equalsIgnoreCase(img))

return "IMG";

}

for (String doc : docExt) {

if (ext.equalsIgnoreCase(doc))

return "DOC";

}

for (String vid : vidExt) {

if (ext.equalsIgnoreCase(vid))

return "VID";

}

return null;

}

/**

* 检查上传文件有效性

*

* @param file

* @param fileName

* @param type

* 1、 图片 2、文档 3、音频

* @return

*/

public static Object[] checkUploadFile(File file, String fileName,

Integer type) {

Object[] returns = new Object[] { true, "上传文件有效。" };

if (file.length() > IMG_MAX_SIZE) {

returns[0] = false;

returns[1] = "上传文件过大,请重新上传。";

return returns;

}

String ext = fileName.substring(fileName.lastIndexOf(".") + 1);

// 上传文件资源类型

String xtype = getSourceFileType(ext);

xtype = StringUtils.isNotEmpty(xtype) == true ? xtype : "UNKWON";

switch (type) {

case 1:

if (!xtype.equalsIgnoreCase("IMG")) {

returns[0] = false;

returns[1] = "上传图片文件错误,请重新上传。格式为[bmp, png, gif, jpeg, jpg]";

}

break;

case 2:

if (!xtype.equalsIgnoreCase("DOC")) {

returns[0] = false;

returns[1] = "上传文档文件错误,请重新上传。格式为[doc, docx]";

}

break;

case 3:

if (!xtype.equalsIgnoreCase("DOC")) {

returns[0] = false;

returns[1] = "上传音频文件错误,请重新上传。格式为[rm,rmvb,mov,mtv,dat,wmv,avi,3gp,amv,dmv]";

}

break;

default:

break;

}

return returns;

}

public static void WriteFile(String file_name,String content,boolean append,boolean huanhang){

try{

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file_name,append),"UTF-8"));

bw.write(content);

if(huanhang){

bw.newLine();

}

bw.flush();

bw.close();

}catch(Exception ex){

ex.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值