in tsfile-viewer-web/src/main/java/org/apache/iotdb/ui/service/TsfileViewerService.java [65:120]
public List<FileRecord> showFileList(String directoryPath) throws TsfileViewerException {
directoryPath = getFullPath(directoryPath);
List<FileRecord> fileRecordList = new ArrayList<>();
File directoryFile = new File(directoryPath);
if (!directoryFile.isDirectory()) {
throw new TsfileViewerException(TsfileViewerException.PATH_NOT_DIRECTORY, "");
}
// 如果为空文件夹,直接返回
if (directoryFile.listFiles() == null) {
return fileRecordList;
}
for (File child : directoryFile.listFiles()) {
if (child.isDirectory()) {
FileRecord record = new FileRecord();
record.setName(child.getName());
record.setCanRead(child.canRead());
record.setType(FileType.DIRECTORY);
record.setStatus(LoadStatus.EXCLUDED);
record.setSameFolder(true);
fileRecordList.add(record);
} else {
if (child.getName().toLowerCase().endsWith(".tsfile")) {
FileRecord record = new FileRecord();
record.setName(child.getName());
record.setCanRead(child.canRead());
record.setType(FileType.FILE);
if (tsfileViewerContainer.contain(child.getPath())) {
record.setStatus(LoadStatus.LOADED);
} else {
record.setStatus(LoadStatus.UNLOAD);
}
// record.setPath(child.getPath());
record.setSameFolder(true);
fileRecordList.add(record);
} else {
continue;
}
}
}
fileRecordList =
fileRecordList.stream()
.sorted(
(o1, o2) -> {
if (o1.getType() == FileType.DIRECTORY && o2.getType() == FileType.FILE) {
return -2;
} else if (o1.getType() == FileType.FILE && o2.getType() == FileType.DIRECTORY) {
return 2;
} else {
return 0;
}
})
.collect(Collectors.toList());
return fileRecordList;
}