package com.zy.asrs.utils;
|
|
import lombok.Data;
|
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.UrlResource;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.ResponseEntity;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.io.OutputStream;
|
import java.nio.file.Path;
|
import java.nio.file.Paths;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class FileSaveExampleUtil {
|
|
// public static void main(String[] args) {
|
// String filePath = "D:/work/file/file.txt"; // 指定保存文件的路径
|
//
|
// try {
|
// String content = "这是要保存的文件内容";
|
// saveToFile(filePath, content);
|
// System.out.println("文件保存成功!");
|
// } catch (IOException e) {
|
// System.out.println("文件保存失败:" + e.getMessage());
|
// }
|
// }
|
|
public static void saveToFile(String filePath, String content) throws IOException {
|
File file = new File(filePath);
|
|
// 创建父目录(如果不存在)
|
File parentDir = file.getParentFile();
|
if (!parentDir.exists()) {
|
parentDir.mkdirs();
|
}
|
|
// 将内容写入文件
|
try (OutputStream outputStream = new FileOutputStream(file)) {
|
byte[] bytes = content.getBytes();
|
outputStream.write(bytes);
|
}
|
}
|
|
// public static void main(String[] args) {
|
// String savePath = "C:/path/to/save/"; // 指定保存文件的路径
|
// MultipartFile file = ...; // 获取要保存的MultipartFile文件
|
//
|
// try {
|
// saveFile(file, savePath);
|
// System.out.println("文件保存成功!");
|
// } catch (IOException e) {
|
// System.out.println("文件保存失败:" + e.getMessage());
|
// }
|
// }
|
|
// public static void saveFile(MultipartFile file, String savePath) throws IOException {
|
// // 创建保存文件的目录(如果不存在)
|
// File directory = new File(savePath);
|
// if (!directory.exists()) {
|
// directory.mkdirs();
|
// }
|
//
|
// // 保存文件
|
// String fileName = file.getOriginalFilename();
|
// String filePath = savePath + fileName;
|
// File dest = new File(filePath);
|
// file.transferTo(dest);
|
// }
|
|
public static void deleteFilesInDirectory(String directoryPath) {
|
File directory = new File(directoryPath);
|
if (directory.exists() && directory.isDirectory()) {
|
File[] files = directory.listFiles();
|
if (files != null) {
|
for (File file : files) {
|
if (file.isFile()) {
|
file.delete();
|
System.out.println("Deleted file: " + file.getAbsolutePath());
|
}
|
}
|
}
|
}
|
}
|
|
// public static FileDTO downloadFile(String directoryPath,HttpServletResponse response) {
|
// File file = new File(directoryPath);
|
// if (file.exists()) {
|
// try {
|
// response.setContentType("application/vnd.ms-excel");
|
// response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
|
//
|
// FileInputStream fileInputStream = new FileInputStream(file);
|
// OutputStream outputStream = response.getOutputStream();
|
// byte[] buffer = new byte[1024];
|
// int length;
|
// while ((length = fileInputStream.read(buffer)) != -1) {
|
// outputStream.write(buffer, 0, length);
|
// }
|
// outputStream.flush();
|
// outputStream.close();
|
// fileInputStream.close();
|
//
|
// return new FileDTO(true, file.getName(), null);
|
// } catch (IOException e) {
|
// e.printStackTrace();
|
// }
|
// }
|
//
|
// return new FileDTO(false, null, "文件不存在");
|
//
|
//
|
// }
|
|
// public static void downloadFile(String directoryPath,HttpServletResponse response) {
|
// try {
|
//// File file = new File(directoryPath);
|
//// InputStream inputStream = new FileInputStream(file);
|
//// //输出文件
|
//// InputStream fis = new BufferedInputStream(inputStream);
|
//// byte[] buffer = new byte[fis.available()];
|
//// fis.read(buffer);
|
//// fis.close();
|
//// response.reset();
|
////
|
//// //获取文件的名字再浏览器下载页面
|
//// String name = file.getName();
|
//// response.addHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), "iso-8859-1"));
|
//// response.addHeader("Content-Length", "" + file.length());
|
//// OutputStream out = new BufferedOutputStream(response.getOutputStream());
|
//// response.setContentType("application/octet-stream");
|
//// out.write(buffer);
|
//// out.flush();
|
//// out.close();
|
// File file = new File(directoryPath);
|
// if (!file.exists()) {
|
// // 文件不存在,可以根据实际情况进行处理
|
// return;
|
// }
|
//
|
// response.reset();
|
// response.setContentType("application/octet-stream");
|
// response.setContentLength((int) file.length());
|
// response.setHeader("Content-Disposition", "attachment;filename=" + file.getName());
|
//
|
// BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
|
// BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
|
// byte[] buffer = new byte[4096];
|
// int bytesRead;
|
// while ((bytesRead = bis.read(buffer)) != -1) {
|
// bos.write(buffer, 0, bytesRead);
|
// }
|
// bos.flush();
|
//
|
// bis.close();
|
// bos.close();
|
// } catch (IOException e) {
|
// e.printStackTrace();
|
// }
|
// }
|
|
public static ResponseEntity<Resource> downloadFile(String filename, HttpServletResponse response) {
|
try {
|
File file = new File(filename);
|
//获取文件的名字再浏览器下载页面
|
String name = file.getName();
|
|
// 构建文件路径
|
Path filePath = Paths.get(filename);
|
Resource resource = new UrlResource(filePath.toUri());
|
|
if (resource.exists()) {
|
// 设置响应头
|
HttpHeaders headers = new HttpHeaders();
|
// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
response.setContentType("application/octet-stream");
|
headers.setContentDispositionFormData("attachment", filename);
|
response.addHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), "UTF-8"));
|
// headers.setContentDispositionFormData("attachment", URLEncoder.encode(name, "UTF-8"));
|
// response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8"));
|
|
// 返回文件响应
|
return ResponseEntity.ok()
|
.headers(headers)
|
.body(resource);
|
|
// // 设置响应头
|
// HttpHeaders headers = new HttpHeaders();
|
// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
|
// headers.setContentDispositionFormData("attachment", URLEncoder.encode(name, "UTF-8"));
|
// response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8"));
|
//
|
// // 返回文件响应
|
// return ResponseEntity.ok()
|
// .headers(headers)
|
// .body(resource);
|
} else {
|
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
|
return null;
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
return null;
|
}
|
}
|
|
public static List<FileDTO> viewFileList(String directoryPath) {
|
List<FileDTO> fileList = new ArrayList<>();
|
|
File directory = new File(directoryPath);
|
if (directory.exists() && directory.isDirectory()) {
|
File[] files = directory.listFiles();
|
if (files != null) {
|
for (File file : files) {
|
if (file.isFile()) {
|
FileDTO fileDTO = new FileDTO(file.getName(), file.length(), file.getAbsolutePath());
|
// FileDTO fileDTO = new FileDTO(file.getName(), file.length());
|
fileList.add(fileDTO);
|
}
|
}
|
}
|
}
|
|
return fileList;
|
}
|
|
@Data
|
public static class FileDTO {
|
private String name;
|
private long size;
|
private String path;
|
private String userName;
|
private boolean success;
|
private String errorMessage;
|
|
public FileDTO(String name, long size, String path) {
|
this.name = name;
|
this.size = size;
|
this.path = path;
|
}
|
|
public FileDTO(String name, long size, String path,String userName) {
|
this.name = name;
|
this.size = size;
|
this.path = path;
|
this.userName = userName;
|
}
|
|
public FileDTO(String name, long size) {
|
this.name = name;
|
this.size = size;
|
// this.path = path;
|
}
|
|
public FileDTO(boolean success, String name, String errorMessage) {
|
this.success = success;
|
this.name = name;
|
this.errorMessage = errorMessage;
|
}
|
|
// getters and setters
|
}
|
|
// public static void main(String[] args) {
|
// String directoryPath = "/path/to/directory";
|
// deleteFilesInDirectory(directoryPath);
|
// }
|
}
|