import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
/**
* 文件处理工具类
* @author lhz
* 2020-8-28 10:14:18
*
*/
public class FileUtils {
/**
* 将 文件从网络环境中读取
* @param fileUrl
* @return
* @throws IOException
*/
public static BufferedInputStream readFileFromNet(String fileUrl) throws IOException {
if(StringUtils.isBlank(fileUrl)) {
return null;
}
URL url;
url = new URL(fileUrl);
return new BufferedInputStream(url.openStream());
}
/**
* 将文件写入 response
* 没有关闭流
* @param bis
* @param response
* @throws IOException
*/
public static void writeFile(BufferedInputStream bis,boolean bis_closeFlag,String fileName,HttpServletResponse response) throws IOException {
if(bis==null) {
return ;
}
int len=0;
byte[ ] bs=new byte[2048];
if(StringUtils.isNotBlank(fileName)) {
response.setContentType("application/octet-stream; charset=utf-8");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "utf-8"));
}
while((len=bis.read(bs))!=-1) {
response.getOutputStream().write(bs,0,len);
}
if(bis_closeFlag) {
bis.close();
}
response.getOutputStream().flush();
}
/**
* 写入文件
* @param bis
* @param os
* @param bis_closeFlag
* @throws IOException
*/
public static void writeFile(BufferedInputStream bis,OutputStream os,boolean bis_closeFlag) throws IOException {
if(bis==null) {
return ;
}
int len=0;
byte[ ] bs=new byte[2048];
while((len=bis.read(bs))!=-1) {
os.write(bs,0,len);
}
if(bis_closeFlag) {
bis.close();
}
os.flush();
os.close();
}
/**
* 读取文件同时写回
* @param fileUrl
* @param response
* @throws IOException
*/
public static void readNetFileAndWirte(String fileUrl,boolean bis_closeFlag,String fileName,HttpServletResponse response) throws IOException {
writeFile(readFileFromNet(fileUrl), true,fileName,response);
}
}