Skip to content

Commit d08ca4d

Browse files
committed
Java:MultiDataSource 完成扫描文件目录,优化路径初始化
1 parent e625d39 commit d08ca4d

File tree

1 file changed

+36
-19
lines changed

1 file changed

+36
-19
lines changed

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/boot/FileController.java

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package apijson.boot;
22

3-
import java.io.File;
4-
import java.io.FileInputStream;
5-
import java.io.FileNotFoundException;
6-
import java.io.FileOutputStream;
3+
import java.io.*;
74
import java.util.ArrayList;
5+
import java.util.Arrays;
86
import java.util.List;
7+
import java.util.Objects;
98

109
//import javax.annotation.PostConstruct;
1110

@@ -33,32 +32,28 @@
3332
@Controller
3433
public class FileController {
3534

36-
private static String fileUploadRootDir = null;
35+
public static final String HOME_DIR = System.getProperty("user.home");
3736

38-
// @Value"${file.upload.root.dir.windows}")
39-
String fileUploadRootDirWindows = "C:/work/upload/";
37+
private static final String WINDOWS_DIR = HOME_DIR+ "\\upload\\";
4038

41-
// @Value"${file.upload.root.dir.mac}")
42-
String fileUploadRootDirMac = "/Users/Tommy/upload/";
39+
private static final String MAC_DIR = HOME_DIR + "/upload/";
4340

44-
// @Value"${file.upload.root.dir.linux}")
45-
String fileUploadRootDirLinux = "~/upload/";
41+
private static final String LINUX_DIR = HOME_DIR + "/upload/";
4642

47-
private static List<String> fileRepository = new ArrayList<>();
43+
private static String fileUploadRootDir = null;
4844

49-
// @PostConstruct
50-
public void initFileRepository(){
45+
static {
5146
// 判断文件夹是否存在,不存在就创建
5247
String osName = System.getProperty("os.name");
5348
if (osName.startsWith("Mac OS")) {
5449
// 苹果
55-
fileUploadRootDir = fileUploadRootDirMac;
50+
fileUploadRootDir = MAC_DIR;
5651
} else if (osName.startsWith("Windows")) {
5752
// windows
58-
fileUploadRootDir = fileUploadRootDirWindows;
53+
fileUploadRootDir = WINDOWS_DIR;
5954
} else {
6055
// unix or linux
61-
fileUploadRootDir = fileUploadRootDirLinux;
56+
fileUploadRootDir = LINUX_DIR;
6257
}
6358

6459
File directories = new File(fileUploadRootDir);
@@ -73,11 +68,33 @@ public void initFileRepository(){
7368
}
7469
}
7570

71+
public static final List<String> IMG_SUFFIXES = Arrays.asList("jpg", "jpeg", "png");
72+
private static List<String> fileNames = null;
7673
@GetMapping("/files")
7774
@ResponseBody
7875
public JSONObject files() {
76+
File dir = new File(fileUploadRootDir);
77+
if (fileNames == null || fileNames.isEmpty()) {
78+
List<String> names = new ArrayList<>();
79+
File[] files = dir.listFiles(new FileFilter() {
80+
@Override
81+
public boolean accept(File file) {
82+
String name = file == null ? null : file.getName();
83+
int ind = name == null ? -1 : name.lastIndexOf(".");
84+
String suffix = ind < 0 ? null : name.substring(ind + 1);
85+
boolean isImg = suffix != null && IMG_SUFFIXES.contains(suffix.toLowerCase());
86+
if (isImg) {
87+
names.add(name);
88+
}
89+
return isImg;
90+
}
91+
});
92+
93+
fileNames = names;
94+
}
95+
7996
JSONObject res = new JSONObject();
80-
res.put("data", fileRepository);
97+
res.put("data", fileNames);
8198
return new DemoParser().extendSuccessResult(res);
8299
}
83100

@@ -91,7 +108,7 @@ public JSONObject upload(@RequestParam("file") MultipartFile file) {
91108
fileOutputStream.write(file.getBytes());
92109
fileOutputStream.close();
93110

94-
fileRepository.add(file.getOriginalFilename());
111+
fileNames.add(file.getOriginalFilename());
95112

96113
JSONObject res = new JSONObject();
97114
res.put("path", "/download/" + file.getOriginalFilename());

0 commit comments

Comments
 (0)