递归扫描指定路径下的所有文件
/**
* 指定路径下多有文件
*/
public static ArrayList<File> getAllFile(String fileUrl) {
File dirFile = new File(fileUrl);
// 如果文件夹不存在或着不是文件夹,则返回 null
if (!dirFile.exists() || dirFile.isFile())
return null;
File[] childrenFiles = dirFile.listFiles();
if (Objects.isNull(childrenFiles) || childrenFiles.length == 0)
return null;
ArrayList<File> files = new ArrayList<>();
for (File childFile : childrenFiles) {
// 如果是文件,直接添加到结果集合
if (childFile.isFile()) {
files.add(childFile);
}
//以下几行代码取消注释后可以将所有子文件夹里的文件也获取到列表里
else {
// 如果是文件夹,则将其内部文件添加进结果集合
ArrayList<File> cFiles = getAllFile(String.valueOf(childFile));
if (Objects.isNull(cFiles) || cFiles.isEmpty()) continue;
files.addAll(cFiles);
}
}
return files;
}
/**
* main方法测试
* */
public static void main(String[] args) {
String path = "C:\\Users\\PinkFace\\Desktop\\测试数据";
ArrayList<File> fileType = getAllFile(path);
System.out.println(fileType);
}
拿到文件后缀
/**
* 文件后缀
*/
public static String getFileType(String fileName) {
int index = fileName.lastIndexOf(".");
String extension = fileName.substring(/**/index + 1);
return extension;
}
//常见文件后缀
String[] imgType = {"bmp", "jpg", "png", "ticf", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd", "cdr", "pcd", "dxf", "ufo", "eps", "ai", "raw", "WMF", "webp", "avif", "apng"};
String[] ysType = {"Rar", "zip", "7z", "CAB", "ARJ", "LZH", "TAR", "GZ", "ACE", "UUE", "BZJAR", "ISO", "MPQ", "jpg", "rmvb"};
字符串分割
/**
* 字符串分割,转list
*/
public static List<String> stringsSplit(String fuJianName) {
if (fuJianName.contains(",")) {
String[] split = fuJianName.split(",");
return Arrays.asList(split);
}
List<String> strings = new ArrayList<>();
strings.add(fuJianName);
return strings;
}
上传文件 转base64后直接返回base64
/**
* 上传文件 转base64
*/
@PostMapping(value = "makePhoto.do")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "上传文件,返回base64")
public String encodeBase64File(MultipartFile file) throws Exception {
InputStream fileInputStream = file.getInputStream();
byte[] bytes = new byte[fileInputStream.available()];
// 读取到 byte 里面
fileInputStream.read(bytes);
fileInputStream.close();
BASE64Encoder base64Encoder = new BASE64Encoder();
// 得到文件 之后转成beye 然后使用base64转码
return base64Encoder.encode(bytes);
}
上传文件到指定本地文件夹
@PostMapping("/uploadile")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "上传文件,返回文件地址")
public Rsp uploadiles(MultipartFile file) {
//file是一个临时文件,请求结束后自动删除
//获取原始文件名
String originalFilename = file.getOriginalFilename();
//取文件名的后缀
String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
//使用uuid生成文件名,防止重复导致覆盖
// String fileName = UUID.randomUUID().toString()+substring;
String basePath = System.getProperty("user.dir") + File.separator + "materialPicture\\";
//创建一个目录对象
File dir = new File(basePath);
//判断目录是否存在
if (!dir.exists()) {
//目录不存在,则先创建
dir.mkdirs();
}
try {
//将临时文件转存到指定位置
file.transferTo(new File(basePath + originalFilename));
} catch (IOException e) {
e.printStackTrace();
}
return Rsp.success(basePath + originalFilename);
}
指定文件夹里的图片文件转base64
public static String convertToBase64(String imagePath) throws IOException {
File file = new File(imagePath);
try (FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);
}
byte[] imageBytes = bos.toByteArray();
String s = Base64.getEncoder().encodeToString(imageBytes);
if (s != null && !s.isEmpty()) {
//转换成功删除图片
FileUtils.deleteQuietly(new File(imagePath));
}
return s;
}
}
指定文件夹里的所有文件
public static ArrayList<String> getFiles(String path) {
ArrayList<String> strings = new ArrayList<>();
File folder = new File(path);
File[] files = folder.listFiles();
assert files != null;
for (File file : files) {
if (file.isFile()) {
strings.add(file.getPath());
}
}
return strings;
}