This commit is contained in:
2025-07-21 17:30:50 +08:00
parent a61249d1f2
commit 4aecd78cae
9179 changed files with 2803647 additions and 0 deletions

View File

@@ -0,0 +1,540 @@
package com.system.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileChannel.MapMode;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
public class FileUtil {
/**
* 单个文件上传
* @param is
* @param fileName
* @param filePath
*/
public static boolean upFile(MultipartFile uploadFile,String fileName,String filePath){
FileOutputStream fos = null;
BufferedOutputStream bos = null;
FileInputStream is = null;
BufferedInputStream bis = null;
File file = new File(filePath);
if(!file.exists()){
file.mkdirs();
}
File f = new File(filePath+"/"+fileName);
try {
InputStream inputStream = uploadFile.getInputStream();
//is = new FileInputStream(uploadFile);
bis = new BufferedInputStream(inputStream);
fos = new FileOutputStream(f);
bos = new BufferedOutputStream(fos);
byte[] bt = new byte[4096];
int len = 0;
while((len = bis.read(bt))>0){
bos.write(bt, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
try {
if(null != bos){
bos.close();
bos = null;
}
if(null != fos){
fos.close();
fos= null;
}
if(null != is){
is.close();
is=null;
}
if (null != bis) {
bis.close();
bis = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
/**
* 文件下载
* @param response
* @param downloadFile
*/
public static void downloadFile(HttpServletRequest request, HttpServletResponse response, String downloadFile, String fileName) {
BufferedInputStream bis = null;
InputStream is = null;
OutputStream os = null;
BufferedOutputStream bos = null;
try {
File file=new File(downloadFile); //文件的声明
is = new FileInputStream(file); //文件流的声明
os = response.getOutputStream(); //重点突出(特别注意),通过response获取的输出流作为服务端往客户端浏览器输出内容的一个通道
// 为了提高效率使用缓冲区流
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(os);
// 处理下载文件名的乱码问题
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
fileName = new String(fileName.getBytes("GB2312"),"ISO-8859-1");
} else {
// 对文件名进行编码处理中文问题
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");// 处理中文文件名的问题
fileName = new String(fileName.getBytes("UTF-8"), "GBK");// 处理中文文件名的问题
}
response.reset(); // 重点突出
response.setCharacterEncoding("UTF-8"); // 重点突出
response.setContentType("application/x-msdownload");// 不同类型的文件对应不同的MIME类型 // 重点突出
// inline在浏览器中直接显示不提示用户下载
// attachment弹出对话框提示用户进行下载保存本地
// 默认为inline方式
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
// response.setHeader("Content-Disposition", "attachment; filename="+fileName); // 重点突出
int bytesRead = 0;
byte[] buffer = new byte[1024];
while ((bytesRead = bis.read(buffer)) != -1){ //重点
bos.write(buffer, 0, bytesRead);// 将文件发送到客户端
}
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
} finally {
// 特别重要
// 1. 进行关闭是为了释放资源
// 2. 进行关闭会自动执行flush方法清空缓冲区内容
try {
if (null != bis) {
bis.close();
bis = null;
}
if (null != bos) {
bos.close();
bos = null;
}
if (null != is) {
is.close();
is = null;
}
if (null != os) {
os.close();
os = null;
}
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
}
}
}
/**
* 文件下载
* @param response
* @param downloadFile
*/
public static void downloadFile(HttpServletResponse response, String downloadFile, String showFileName) {
BufferedInputStream bis = null;
InputStream is = null;
OutputStream os = null;
BufferedOutputStream bos = null;
try {
File file=new File(downloadFile); //:文件的声明
String fileName=file.getName();
is = new FileInputStream(file); //:文件流的声明
os = response.getOutputStream(); // 重点突出
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(os);
// 对文件名进行编码处理中文问题
fileName = java.net.URLEncoder.encode(showFileName, "UTF-8");// 处理中文文件名的问题
fileName = new String(fileName.getBytes("UTF-8"), "GBK");// 处理中文文件名的问题
response.reset(); // 重点突出
response.setCharacterEncoding("UTF-8"); // 重点突出
response.setContentType("application/x-msdownload");// 不同类型的文件对应不同的MIME类型 // 重点突出
// inline在浏览器中直接显示不提示用户下载
// attachment弹出对话框提示用户进行下载保存本地
// 默认为inline方式
response.setHeader("Content-Disposition", "attachment; filename="+fileName); // 重点突出
int bytesRead = 0;
byte[] buffer = new byte[1024];
while ((bytesRead = bis.read(buffer)) != -1){ //重点
bos.write(buffer, 0, bytesRead);// 将文件发送到客户端
}
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
} finally {
// 特别重要
// 1. 进行关闭是为了释放资源
// 2. 进行关闭会自动执行flush方法清空缓冲区内容
try {
if (null != bis) {
bis.close();
bis = null;
}
if (null != bos) {
bos.close();
bos = null;
}
if (null != is) {
is.close();
is = null;
}
if (null != os) {
os.close();
os = null;
}
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
}
}
}
/**
* 文件下载
* @param response
* @param downloadFile
*/
public static void downloadPDFFile(HttpServletResponse response, String showFileName, byte[] data) {
OutputStream os = null;
BufferedOutputStream bos = null;
try {
// 对文件名进行编码处理中文问题
/*showFileName = URLEncoder.encode(showFileName, "UTF-8");
if (showFileName.length() > 150) {
String guessCharset = "gb2312"; 根据request的locale 得出可能的编码中文操作系统通常是gb2312
showFileName = new String(showFileName.getBytes("gb2312"), "ISO8859-1");
} */
showFileName = new String(showFileName.getBytes("utf-8"),"iso8859-1");
os = response.getOutputStream(); // 重点突出
bos = new BufferedOutputStream(os);
// 对文件名进行编码处理中文问题
response.reset(); // 重点突出
response.setHeader("Accept-Ranges", "bytes");
response.setHeader("Cache-Control", "no-store");
response.setHeader("Content-Length", data.length + "");
response.setHeader("Content-Type", "application/pdf");
//response.setHeader("X-Application-Context","application:8080");
response.setCharacterEncoding("UTF-8"); // 重点突出
//response.setContentType("application/pdf");// 不同类型的文件对应不同的MIME类型 // 重点突出
// inline在浏览器中直接显示不提示用户下载
// attachment弹出对话框提示用户进行下载保存本地
// 默认为inline方式
//attachment;filename= attachment;浏览器会自动下载
//response.setHeader("Content-Disposition", "filename=9999"); // 重点突出
bos.write(data);
bos.flush();
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
} finally {
try {
if (null != bos) {
bos.close();
bos = null;
}
if (null != os) {
os.close();
os = null;
}
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
}
}
}
/**
* 将文本文件转换成2进制
* @param is
* @param fileName
* @param filePath
*/
public static byte[] convertFile2Byte(MultipartFile uploadFile){
try {
if(uploadFile == null){
return null;
}
return uploadFile.getBytes();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
*
* @Title: convertFile2Base64Str
* @Description: 将上传文件解析成base64字符串
* @param uploadFile
* @return
* @return String 返回类型
* @throws
*/
public static String convertFile2Base64Str(MultipartFile uploadFile){
try {
return Base64Util.encode(convertFile2Byte(uploadFile));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String txt2String(File file){
StringBuilder result = new StringBuilder();
try{
InputStreamReader ir =new InputStreamReader(new FileInputStream(file), "utf-8");
BufferedReader br = new BufferedReader(ir);//构造一个BufferedReader类来读取文件
String s = null;
while((s = br.readLine())!=null){//使用readLine方法一次读一行
result.append(new String(s.getBytes()));
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
return result.toString();
}
public static String ReadFile(String Path){
BufferedReader reader = null;
String laststr = "";
try{
FileInputStream fileInputStream = new FileInputStream(Path);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
reader = new BufferedReader(inputStreamReader);
String tempString = null;
while((tempString = reader.readLine()) != null){
laststr += tempString;
}
reader.close();
}catch(IOException e){
e.printStackTrace();
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return laststr;
}
public static List<String> ReadLine(String Path){
BufferedReader reader = null;
List<String> lines = new ArrayList<String>();
try{
FileInputStream fileInputStream = new FileInputStream(Path);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
reader = new BufferedReader(inputStreamReader);
String line = null;
while((line = reader.readLine()) != null){
lines.add(line);
}
reader.close();
}catch(IOException e){
e.printStackTrace();
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return lines;
}
/**
*
* @Title: toByteArray3
* @Description: TODO
* @param filename
* @return
* @throws IOException
* @return byte[] 返回类型
* @throws
*/
@SuppressWarnings("resource")
public static byte[] file2ByteArray(String filename) throws IOException {
FileChannel fc = null;
try {
fc = new RandomAccessFile(filename, "r").getChannel();
MappedByteBuffer byteBuffer = fc.map(MapMode.READ_ONLY, 0, fc.size()).load();
byte[] result = new byte[(int) fc.size()];
if (byteBuffer.remaining() > 0) {
byteBuffer.get(result, 0, byteBuffer.remaining());
}
return result;
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
try {
fc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static byte[] getFileToByte(File file) {
InputStream is = null;
ByteArrayOutputStream bytestream = null;
byte[] by = new byte[(int) file.length()];
try {
is = new FileInputStream(file);
bytestream = new ByteArrayOutputStream();
byte[] bb = new byte[2048];
int ch;
ch = is.read(bb);
while (ch != -1) {
bytestream.write(bb, 0, ch);
ch = is.read(bb);
}
by = bytestream.toByteArray();
} catch (Exception ex) {
ex.printStackTrace();
}finally {
try {
if(is != null) is.close();
if(bytestream != null) bytestream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return by;
}
public static byte[] getFileToByte(String filename) {
File file = new File(filename);
if(!file.exists()) throw new RuntimeException("文件不存在");
return getFileToByte( file);
}
/**
*
* writeData: 将数据写入指定的文件中
*
* @param filePath
* @param data
* @return boolean 是否写入成功
*/
public static boolean writeData(String filePath, byte[] data){
FileOutputStream fos = null;
try {
File file = new File(filePath);
if(file.exists()){
file.delete();
}
file.createNewFile();
fos =new FileOutputStream(file);
fos.write(data);
fos.close();
return true;
} catch (Exception e) {
return false;
}finally{
if(fos != null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* @param filePath
* @param data
* @param nextLine
* @return boolean 是否写入成功
*/
public static boolean append(String filePath, String data, boolean nextLine ){
try {
try {
File file = new File(filePath);
if(!file.exists()){
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
if(nextLine) {
data = data + System.lineSeparator();
}
osw.write(data);
osw.flush();
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
return true;
} catch (Exception e) {
return false;
}finally{
}
}
public static void main(String[] args) throws IOException {
FileUtil.append("D:\\aa.txt", "12323",true);
}
}