代码优化

This commit is contained in:
马超 2021-07-11 22:38:18 +08:00
parent 69a104640f
commit b379e983da
2 changed files with 7 additions and 0 deletions

View File

@ -26,6 +26,8 @@ import java.util.Map;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/** /**
* 文件逻辑处理组件 * 文件逻辑处理组件
@ -106,6 +108,9 @@ public class FileDealComp {
* @param sessionUserId * @param sessionUserId
*/ */
public void restoreParentFilePath(String filePath, Long sessionUserId) { public void restoreParentFilePath(String filePath, Long sessionUserId) {
// 加锁防止并发情况下有重复创建目录情况
Lock lock = new ReentrantLock();
lock.lock();
String parentFilePath = PathUtil.getParentPath(filePath); String parentFilePath = PathUtil.getParentPath(filePath);
while(parentFilePath.contains("/")) { while(parentFilePath.contains("/")) {
String fileName = parentFilePath.substring(parentFilePath.lastIndexOf("/") + 1); String fileName = parentFilePath.substring(parentFilePath.lastIndexOf("/") + 1);
@ -130,6 +135,7 @@ public class FileDealComp {
} }
} }
lock.unlock();
} }

View File

@ -104,6 +104,7 @@ public class FiletransferService implements IFiletransferService {
if (relativePath.contains("/")) { if (relativePath.contains("/")) {
userFile.setFilePath(uploadFileDto.getFilePath() + PathUtil.getParentPath(relativePath) + "/"); userFile.setFilePath(uploadFileDto.getFilePath() + PathUtil.getParentPath(relativePath) + "/");
fileDealComp.restoreParentFilePath(uploadFileDto.getFilePath() + PathUtil.getParentPath(relativePath) + "/", userId); fileDealComp.restoreParentFilePath(uploadFileDto.getFilePath() + PathUtil.getParentPath(relativePath) + "/", userId);
} else { } else {
userFile.setFilePath(uploadFileDto.getFilePath()); userFile.setFilePath(uploadFileDto.getFilePath());
} }