package com.zhouquan.utils;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
/**
* 文件处理工具类
*/
public class FileUtils {
private static final Logger log = LoggerFactory.getLogger(FileUtils.class);
public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
private static final String[] IEBrowserSignals = {"MSIE", "Trident", "Edge"};
/**
* 输出指定文件的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 {
IOUtils.close(os);
IOUtils.close(fis);
}
}
/**
* 删除文件
*
* @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;
}
/**
* 百分号编码工具方法
*
* @param s 需要百分号编码的字符串
* @return 百分号编码后的字符串
*/
public static String percentEncode(String s) throws UnsupportedEncodingException {
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
return encode.replaceAll("\\+", "%20");
}
/**
* 获取图像后缀
*
* @param photoByte 图像数据
* @return 后缀名
*/
public static String getFileExtendName(byte[] photoByte) {
String strFileExtendName = "jpg";
if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
&& ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) {
strFileExtendName = "gif";
} else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) {
strFileExtendName = "jpg";
} else if ((photoByte[0] == 66) && (photoByte[1] == 77)) {
strFileExtendName = "bmp";
} else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) {
strFileExtendName = "png";
}
return strFileExtendName;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Springboot使用pdfbox提取PDF图片 (102个子文件)
FileUtils.class 4KB
PdfServiceImpl.class 3KB
PdfUtils.class 3KB
CollectionUtils.class 3KB
PageResult.class 2KB
PdfTests.class 1KB
RunApplication.class 722B
PdfController.class 500B
PdfService.class 279B
.gitignore 428B
pagehelper.iml 9KB
FileUtils.java 4KB
PdfServiceImpl.java 3KB
PdfUtils.java 3KB
CollectionUtils.java 2KB
PdfTests.java 1KB
PdfService.java 492B
RunApplication.java 402B
PdfController.java 327B
PageResult.java 265B
pagehelper.kotlin_module 16B
workspace.xml 50KB
uiDesigner.xml 9KB
pom.xml 3KB
Project_Default.xml 1KB
compiler.xml 1KB
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_13_3.xml 736B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_7_2.xml 713B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 700B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_13_3.xml 695B
Maven__org_springframework_boot_spring_boot_starter_logging_2_7_2.xml 692B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_7_2.xml 685B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_13_3.xml 681B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_7_2.xml 678B
Maven__org_springframework_boot_spring_boot_starter_json_2_7_2.xml 671B
Maven__org_springframework_boot_spring_boot_starter_test_2_7_2.xml 671B
Maven__org_springframework_boot_spring_boot_starter_web_2_7_2.xml 664B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_65.xml 660B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_3.xml 651B
Maven__org_springframework_boot_spring_boot_starter_2_7_2.xml 636B
Maven__com_github_jai_imageio_jai_imageio_jpeg2000_1_3_0.xml 635B
Maven__org_junit_platform_junit_platform_commons_1_8_2.xml 633B
Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml 633B
Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 633B
Maven__com_fasterxml_jackson_core_jackson_databind_2_13_3.xml 630B
Maven__org_junit_platform_junit_platform_engine_1_8_2.xml 626B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_65.xml 625B
Maven__org_springframework_boot_spring_boot_test_2_7_2.xml 615B
Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml 615B
Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml 615B
Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml 611B
Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_65.xml 611B
Maven__org_springframework_spring_expression_5_3_22.xml 609B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_17_2.xml 608B
Maven__com_github_jai_imageio_jai_imageio_core_1_3_1.xml 607B
Maven__com_fasterxml_jackson_core_jackson_core_2_13_3.xml 602B
Maven__org_mockito_mockito_junit_jupiter_4_5_1.xml 598B
Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml 594B
Maven__org_springframework_spring_context_5_3_22.xml 588B
Maven__org_apache_pdfbox_pdfbox_debugger_2_0_22.xml 587B
Maven__net_bytebuddy_byte_buddy_agent_1_12_12.xml 585B
Maven__org_springframework_spring_webmvc_5_3_22.xml 581B
Maven__org_springframework_boot_spring_boot_2_7_2.xml 580B
Maven__ch_qos_logback_logback_classic_1_2_11.xml 575B
Maven__org_springframework_spring_beans_5_3_22.xml 574B
Maven__org_apache_logging_log4j_log4j_api_2_17_2.xml 573B
Maven__org_apiguardian_apiguardian_api_1_1_2.xml 572B
Maven__org_springframework_spring_core_5_3_22.xml 567B
Maven__org_springframework_spring_test_5_3_22.xml 567B
Maven__org_apache_pdfbox_jbig2_imageio_3_0_2.xml 566B
Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml 566B
Maven__org_apache_pdfbox_pdfbox_tools_2_0_22.xml 566B
Maven__org_springframework_spring_web_5_3_22.xml 560B
Maven__org_springframework_spring_jcl_5_3_22.xml 560B
Maven__org_springframework_spring_aop_5_3_22.xml 560B
Maven__commons_logging_commons_logging_1_2.xml 558B
Maven__net_minidev_accessors_smart_2_4_8.xml 556B
Maven__ch_qos_logback_logback_core_1_2_11.xml 554B
Maven__com_jayway_jsonpath_json_path_2_7_0.xml 546B
Maven__net_bytebuddy_byte_buddy_1_12_12.xml 543B
Maven__org_assertj_assertj_core_3_22_0.xml 542B
Maven__org_skyscreamer_jsonassert_1_5_1.xml 537B
Maven__org_xmlunit_xmlunit_core_2_9_0.xml 535B
Maven__org_mockito_mockito_core_4_5_1.xml 535B
Maven__org_slf4j_jul_to_slf4j_1_7_36.xml 534B
Maven__org_opentest4j_opentest4j_1_2_0.xml 533B
Maven__org_projectlombok_lombok_1_18_24.xml 531B
Maven__org_apache_pdfbox_fontbox_2_0_22.xml 531B
Maven__org_apache_pdfbox_pdfbox_2_0_22.xml 524B
Maven__commons_io_commons_io_2_11_0.xml 524B
Maven__net_minidev_json_smart_2_4_8.xml 521B
Maven__org_slf4j_slf4j_api_1_7_36.xml 513B
Maven__org_objenesis_objenesis_3_2.xml 508B
Maven__org_hamcrest_hamcrest_2_2.xml 497B
Maven__org_yaml_snakeyaml_1_30.xml 495B
Maven__org_ow2_asm_asm_9_1.xml 458B
misc.xml 451B
modules.xml 369B
encodings.xml 209B
vcs.xml 185B
共 102 条
- 1
- 2
资源评论
徐州蔡徐坤
- 粉丝: 2w+
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功