package com.fht.common.util;
import java.io.*;
import java.net.URL;
import java.util.Map;import io.netty.util.internal.StringUtil;
import org.apache.tomcat.util.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.springframework.util.ResourceUtils;import javax.servlet.http.HttpServletResponse;import static freemarker.template.Configuration.VERSION_2_3_24;public class FileUtil {
public static Logger logger = LoggerFactory.getLogger(FileUtil.class);
/**
* 生成word文件(全局可用)
* @param dataMap word中需要展示的动态数据,用map集合来保存
* @param templateName word模板名称,例如:test.ftl
* @param fileFullPath 要生成的文件全路径
*/
@SuppressWarnings("unchecked")
public static void create(Map dataMap, String templateName, String fileFullPath) {
logger.info("【createWord】:==>方法进入");
logger.info("【fileFullPath】:==>" + fileFullPath);
logger.info("【templateName】:==>" + templateName);
try {
// 创建配置实例
Configuration configuration = new Configuration(VERSION_2_3_24);
logger.info("【创建配置实例】:==>"); // 设置编码
configuration.setDefaultEncoding("UTF-8");
logger.info("【设置编码】:==>"); // 设置处理空值
configuration.setClassicCompatible(true); // 设置错误控制器
configuration.setClassForTemplateLoading(FileUtil.class,"/ftl"); //创建文件
File file = new File(fileFullPath);
// 如果输出目标文件夹不存在,则创建
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
} // 将模板和数据模型合并生成文件
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
// 获取模板
Template template = configuration.getTemplate(templateName);
// 生成文件
template.process(dataMap, out); // 清空缓存
out.flush();
// 关闭流
out.close(); } catch (Exception e) {
logger.info("【生成word文件出错】:==>" + e.getMessage());
e.printStackTrace();
}
} /**
* 下载生成的文件(全局可用)
* @param fullPath 全路径
* @param response
*/
public static void downLoadFile(String fullPath, HttpServletResponse response) {
logger.info("【downLoadFile:fullPath】:==>" + fullPath);
InputStream inputStream = null;
OutputStream outputStream = null; try {
//创建文件
File file = new File(fullPath);
String fileName = file.getName(); //读文件流
inputStream = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer); //清空响应
response.reset();
response.setCharacterEncoding("UTF-8");
// response.setContentType("application/octet-stream; charset=utf-8");
// response.setContentType("application/vnd.ms-excel");
// response.setContentType("application/msword");
response.setHeader("Content-Disposition","attachment; filename=" + new String(fileName.getBytes(), "ISO8859-1"));
response.setHeader("Content-Length", "" + file.length()); //写文件流
outputStream = new BufferedOutputStream(response.getOutputStream());
outputStream.write(buffer);
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (inputStream != null) {
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
} }
}
/**
* 下载生成的文件(全局可用)
* @param response
*/
public static void downLoadFile(String filename,InputStream inputStream, HttpServletResponse response) {
OutputStream outputStream = null;
try {
//读文件流
int filesize = inputStream.available();
byte[] buffer = new byte[filesize];
inputStream = new BufferedInputStream(inputStream);
inputStream.read(buffer); //清空响应
response.reset();
response.setCharacterEncoding("UTF-8");
// response.setContentType("application/octet-stream; charset=utf-8");
// response.setContentType("application/vnd.ms-excel");
// response.setContentType("application/msword");
response.setHeader("Content-Disposition","attachment; filename=" + new String(filename.getBytes(), "ISO8859-1"));
response.setHeader("Content-Length", "" + String.valueOf(filesize)); //写文件流
outputStream = new BufferedOutputStream(response.getOutputStream());
outputStream.write(buffer);
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (inputStream != null) {
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
} }
}
/**
* 下载网络文件到本地(主要用于下载简历附件)
* @param urlAddress 网络url地址,为空时直接返回
* @param fileFullPath 文件全路径
*/
public static void createFromUrl(String urlAddress,String fileFullPath) {
logger.info("【service:开始下载网络文件】:==> 网上文件地址:" + urlAddress + "文件保存路径:" + fileFullPath); if(StringUtil.isNullOrEmpty(urlAddress)) {
return ;
} DataInputStream dataInputStream = null;
FileOutputStream fileOutputStream =null;
try { URL url = new URL(urlAddress);
dataInputStream = new DataInputStream(url.openStream());//打开网络输入流
//创建文件
File file = new File(fileFullPath);
// 如果输出目标文件夹不存在,则创建
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
fileOutputStream = new FileOutputStream(file);//建立一个新的文件
byte[] buffer = new byte[1024];
int length;
while((length = dataInputStream.read(buffer))>0){//开始填充数据
fileOutputStream.write(buffer,0,length);
} fileOutputStream.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(dataInputStream!=null) {
dataInputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
} try {
if(fileOutputStream!=null) {
fileOutputStream.close();
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
南京信息工程大学-嵌入式大作业-上机实验与报告内含源码和说明书.zip (1123个子文件)
AccountController.class 11KB
AccountServiceImpl.class 11KB
PoiUtil.class 10KB
FileUtil.class 9KB
ScoreController.class 9KB
UserCompetition.class 8KB
User.class 7KB
ProjectServiceImpl.class 7KB
ExportController.class 6KB
Competition.class 6KB
FileTest.class 6KB
LoginController.class 5KB
MyRealm.class 4KB
News.class 4KB
ProjectController.class 4KB
UploadController.class 4KB
ShiroConfig.class 3KB
NewsController.class 3KB
RolePermission.class 3KB
Session.class 3KB
UserRole.class 3KB
AccountService.class 3KB
SessionServiceImpl.class 3KB
Permission.class 3KB
CompetitionTeamPeople.class 3KB
Role.class 3KB
SessionController.class 3KB
ExceptionController.class 2KB
ImportController.class 2KB
UserCompetitionMapper.class 2KB
ProjectService.class 2KB
GeneratorSqlmap.class 2KB
CompetitionPeople.class 2KB
NewsServiceImpl.class 2KB
PageController.class 2KB
R.class 2KB
TeamPeople.class 2KB
InfoController.class 2KB
InfoServiceImpl.class 2KB
PassTest.class 1KB
UserMapper.class 1KB
PassTest.class 1KB
ProjectServiceImplTest.class 1KB
NotFoundException.class 1KB
RolePermissionMapper.class 963B
CompetitionMapper.class 942B
UserRoleMapper.class 909B
SportsmeetingApplication.class 900B
PermissionMapper.class 816B
RoleMapper.class 723B
SessionService.class 702B
SessionDao.class 669B
SportsmeetingApplicationTests.class 568B
NewsMapper.class 560B
NewsService.class 534B
CompetitionPeopleMapper.class 530B
InfoService.class 474B
AccountException.class 423B
theme.css 227KB
theme.css 227KB
bootstrap.css 149KB
bootstrap.css 149KB
bootstrap.min.css 118KB
bootstrap.min.css 118KB
layui.css 71KB
layui.css 71KB
ueditor.css 45KB
ueditor.css 45KB
font-awesome.css 39KB
font-awesome.css 39KB
ueditor.min.css 34KB
ueditor.min.css 34KB
font-awesome.min.css 30KB
font-awesome.min.css 30KB
bootstrap-theme.css 26KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
bootstrap-theme.min.css 23KB
video-js.css 22KB
video-js.css 22KB
image.css 19KB
image.css 19KB
wangEditor.css 17KB
wangEditor.css 17KB
video.css 15KB
video.css 15KB
wangEditor.min.css 15KB
wangEditor.min.css 15KB
attachment.css 15KB
attachment.css 15KB
layer.css 14KB
layer.css 14KB
video-js.min.css 11KB
video-js.min.css 11KB
layui.mobile.css 10KB
layui.mobile.css 10KB
laydate.css 7KB
laydate.css 7KB
shCoreDefault.css 7KB
shCoreDefault.css 7KB
共 1123 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
小码蚁.
- 粉丝: 2658
- 资源: 4467
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AUTOSAR-SRS-ICUDriver.pdf
- 某二层小型独栋别墅建筑施工图二层.dwg
- AUTOSAR-SRS-DIODriver.pdf
- 某二层小型独栋别墅建筑施工图地下室.dwg
- AUTOSAR-SWS-SAEJ1939TransportLayer.pdf
- 某二层小型独栋别墅建筑施工图wuding.dwg
- AUTOSAR-SWS-SAEJ1939NetworkManagement.pdf
- 某二层小型独栋别墅建筑施工图A-407-0.dwg
- AUTOSAR-SWS-SAEJ1939DiagnosticCommunicationManager.pdf
- 三层新农村单家独院式别墅D110-三层-10.54&10.64米-建施图.dwg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功