Java文件复制到非空目标文件夹



在不使用FileUtils导入的情况下,我很难弄清楚如何对其进行编码。我已经找到了数千个关于如何将文件移动到空文件夹的教程,这很容易。困难在于找出Java如何将文件移动到文件夹中已有文件的目录中。据我所知,REPLACE_EXISTING参数意味着,如果在目标目录中检测到,它将覆盖相同的文件名,但该目录中没有与我试图复制/移动的文件名匹配的文件。我错过了什么?我怎样才能做到这一点?

java.nio.file.DirectoryNotEmptyException正在发生。

enter code here
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;

public class Move {
static File source = new File("sourcefolderhere");
static File destination = new File("destfolderhere");

public static void move(File src, File dest) throws IOException {
Files.move(src.toPath().toAbsolutePath(), dest.toPath().toAbsolutePath(),
StandardCopyOption.REPLACE_EXISTING);         
}
public static void main(String[] args) throws IOException { 
try {       
if(source.isDirectory() && destination.isDirectory()) {         
File[] content = source.listFiles();           
for(int i = 0; i < content.length; i++) {
System.out.println(content[i]);  
move(source, destination);                
}            
}
else if (!destination.isDirectory()){ 
System.out.println("create folder here");
destination.mkdir();
File[] content = source.listFiles();           
for(int i = 0; i < content.length; i++) {
move(source, destination);              
}
}
}
catch(Exception ex) {   System.out.println(ex);    
}
finally {

}
}
}

我在IDE File.move方法中尝试了带有参数StandardCopyOption.REPLACE_EXISTING的代码。只有当目标文件夹中有文件时,该方法才有效。否则使用File.move正常方式。为了避免代码重复,我还对您的代码进行了一些修改。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
public class Move {
static File source = new File("sourcefolderhere");
static File destination = new File("destfolderhere");
public static void move(File src, File dest) throws IOException {
System.out.println(src.getName());
if(isExist(src.getName()))
Files.move(src.toPath().toAbsolutePath(), Paths.get(destination.getAbsolutePath()+File.separator+src.getName()) , StandardCopyOption.REPLACE_EXISTING);
else
Files.move(src.toPath().toAbsolutePath(), Paths.get(destination.getAbsolutePath()+File.separator+src.getName()));
}

public static boolean isExist(String souceFileName){
//If you are not using java 8 code
/*String[] destFiles = destination.list();
for(String fileName : destFiles){
if(souceFileName.equals(fileName))
return true;
}
return false;*/
return Arrays.stream(destination.list())
.anyMatch(fileName -> fileName.equals(souceFileName));
}
public static void main(String[] args) throws IOException {
try {
if(!source.isDirectory())
throw new IllegalArgumentException("Source Folder doesn't Exist");
if(!destination.exists())
destination.mkdir();
if (source.isDirectory() && destination.isDirectory()) {
File[] content = source.listFiles();
for (int i = 0; i < content.length; i++) {
System.out.println(content[i]);
move(content[i], destination);
}
}
} catch (Exception ex) {
System.out.println(ex);
} finally {
}
}
}```

相关内容

  • 没有找到相关文章

最新更新