package com.ruoyi.common.utils.file;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.OutputStream;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;

/**

* 文件处理工具类

*

* @author ruoyi

*/

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

{

public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";

/**

* 输出指定文件的byte数组

*

* @param filePath 文件路径

* @param os 输出流

* @return

*/

public static void writeBytes(String filePath, OutputStream os) throws IOException

{

FileInputStream fis = null;

try

{

File file = new File(filePath);

if (!file.exists())

{

throw new FileNotFoundException(filePath);

}

fis = new FileInputStream(file);

byte[] b = new byte[1024];

int length;

while ((length = fis.read(b)) > 0)

{

os.write(b, 0, length);

}

}

catch (IOException e)

{

throw e;

}

finally

{

if (os != null)

{

try

{

os.close();

}

catch (IOException e1)

{

e1.printStackTrace();

}

}

if (fis != null)

{

try

{

fis.close();

}

catch (IOException e1)

{

e1.printStackTrace();

}

}

}

}

/**

* 删除文件

*

* @param filePath 文件

* @return

*/

public static boolean deleteFile(String filePath)

{

boolean flag = false;

File file = new File(filePath);

// 路径为文件且不为空则进行删除

if (file.isFile() && file.exists())

{

file.delete();

flag = true;

}

return flag;

}

/**

* 文件名称验证

*

* @param filename 文件名称

* @return true 正常 false 非法

*/

public static boolean isValidFilename(String filename)

{

return filename.matches(FILENAME_PATTERN);

}

/**

* 下载文件名重新编码

*

* @param request 请求对象

* @param fileName 文件名

* @return 编码后的文件名

*/

public static String setFileDownloadHeader(HttpServletRequest request, String fileName)

throws UnsupportedEncodingException

{

final String agent = request.getHeader("USER-AGENT");

String filename = fileName;

if (agent.contains("MSIE"))

{

// IE浏览器

filename = URLEncoder.encode(filename, "utf-8");

filename = filename.replace("+", " ");

}

else if (agent.contains("Firefox"))

{

// 火狐浏览器

filename = new String(fileName.getBytes(), "ISO8859-1");

}

else if (agent.contains("Chrome"))

{

// google浏览器

filename = URLEncoder.encode(filename, "utf-8");

}

else

{

// 其它浏览器

filename = URLEncoder.encode(filename, "utf-8");

}

return filename;

}

}

Logo

快速构建 Web 应用程序

更多推荐