|
|
|
@ -18,6 +18,8 @@ import com.fr.workspace.WorkContext;
|
|
|
|
|
import com.fr.workspace.resource.ResourceIOException; |
|
|
|
|
import org.jetbrains.annotations.NotNull; |
|
|
|
|
|
|
|
|
|
import java.nio.file.Path; |
|
|
|
|
import java.nio.file.Paths; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
|
|
|
|
import static javax.swing.JOptionPane.WARNING_MESSAGE; |
|
|
|
@ -27,8 +29,6 @@ import static javax.swing.JOptionPane.WARNING_MESSAGE;
|
|
|
|
|
*/ |
|
|
|
|
public class FileOperationHelper { |
|
|
|
|
|
|
|
|
|
private static final char DIR_SEPARATOR = '/'; |
|
|
|
|
|
|
|
|
|
private static final FileOperationHelper INSTANCE = new FileOperationHelper(); |
|
|
|
|
|
|
|
|
|
public static FileOperationHelper getInstance() { |
|
|
|
@ -36,10 +36,10 @@ public class FileOperationHelper {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 检查多个目标文件夹是否含有源文件夹的子文件夹 |
|
|
|
|
* 检查目标文件夹是否为多个源文件夹中,任一文件夹的子文件夹 |
|
|
|
|
* |
|
|
|
|
* @param fileNodes |
|
|
|
|
* @param targetNode |
|
|
|
|
* @param fileNodes 需移动的源文件 |
|
|
|
|
* @param targetNode 移动后的目标文件夹 |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public boolean isSubDirectory(@NotNull ExpandMutableTreeNode[] fileNodes, @NotNull FileNode targetNode) { |
|
|
|
@ -55,17 +55,16 @@ public class FileOperationHelper {
|
|
|
|
|
/** |
|
|
|
|
* 检查目标文件夹是否为源文件夹的子文件夹 |
|
|
|
|
* |
|
|
|
|
* @param sourceFileNode |
|
|
|
|
* @param targetNode |
|
|
|
|
* @param sourceFileNode 需移动的源文件 |
|
|
|
|
* @param targetNode 移动后的目标文件夹 |
|
|
|
|
*/ |
|
|
|
|
public boolean isSubDirectory(@NotNull FileNode sourceFileNode, @NotNull FileNode targetNode) { |
|
|
|
|
if (!sourceFileNode.isDirectory() || !targetNode.isDirectory()) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
String sourceDir = sourceFileNode.getEnvPath(); |
|
|
|
|
String targetDir = targetNode.getEnvPath(); |
|
|
|
|
return StringUtils.equals(targetDir, sourceDir) || |
|
|
|
|
(targetDir.startsWith(sourceDir) && targetDir.charAt(sourceDir.length()) == DIR_SEPARATOR); |
|
|
|
|
Path sourceDir = Paths.get(sourceFileNode.getEnvPath()); |
|
|
|
|
Path targetDir = Paths.get(targetNode.getEnvPath()); |
|
|
|
|
return targetDir.startsWith(sourceDir); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String moveFile(FileNode sourceFileNode, String targetDir) { |
|
|
|
|