以下是将文件从一个目录复制到另一个目录的代码。 例如:如果文件名是Red-Already Over,Red-Already Over(慢),NEFFEX-Destiny,那么它应该创建一个红色的目录名并将文件复制到其中, 对于另一位艺术家,它应该是NEFFEX文件夹并将文件复制到其中。
问题是,如果注释了Files.copy,它可以创建目录。但是,当取消注释Files.copy时,它无法创建目录但复制文件。 该文件无法播放,因为它没有扩展名(似乎文件没有被正确复制)。
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
public class OrgLogic {
String path="C:\\Users\\Fawkes\\Music\\Music\\";
String target_path="C:\\Output\\";
OrgLogic() throws IOException{
File f=new File(path); //loads the input dir path
File dir=new File(target_path); //loads the output dir path
dir.mkdir();//create a new dir name output
File[] total_file=f.listFiles();//get the total number of file
//System.out.println(total_file.length);//prints the total number of the file
for(int i=0;i<total_file.length;i++) {
String name=total_file[i].getName();
String new_name=name.substring(0, name.indexOf("-")-1);
dir=new File(target_path+new_name);
if(dir.exists()) {
//new File(new_path+new_name).mkdir();
Files.copy(total_file[i].toPath(), dir.toPath(),StandardCopyOption.REPLACE_EXISTING);
}
else {
//new File(target_path+new_name).mkdir();
dir.mkdir();
Files.copy(total_file[i].toPath(), dir.toPath(),StandardCopyOption.REPLACE_EXISTING);
}
}
}
public static void main(String[] args) {
try {
new OrgLogic();
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件名路径是: 资源: C:\ Users \ Fawkes \ Music \ Music \ Red-已经结束了 C:\用户\福克斯\音乐\音乐\红色 - 已经结束(慢) C:\用户\福克斯\音乐\音乐\ NEFFEX-命运
目的地: C:\输出\
例如: C:\ Output \ Red \已经结束 C:\ Output \ Red \已经结束(慢) C:\输出\ NEFFEX \命运
它被声明为变量:path和target_path
(功能:虽然在此处粘贴代码行号,但这样会很好。)
答案 0 :(得分:0)
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class OrgLogic {
String path="C:\\Users\\Fawkes\\Music\\Music\\";
String target_path="C:\\Output\\";
OrgLogic() throws IOException{
File f=new File(path); //loads the input dir path
File dir=new File(target_path); //loads the output dir path
dir.mkdir();//create a new dir name output
File[] total_file=f.listFiles();//get the total number of file
//System.out.println(total_file.length);//prints the total number of the file
for(int i=0;i<total_file.length;i++) {
String name=total_file[i].getName();
String new_name=name.substring(0, name.indexOf("-")-1);
dir=new File(target_path+new_name);
if(dir.exists()) {
Path src=Paths.get(total_file[i].getPath());
Path dest=Paths.get(dir.getAbsolutePath().concat("\\").concat(total_file[i].getName()));
Files.copy(src, dest ,StandardCopyOption.REPLACE_EXISTING);
System.out.println("Files copied: "+(i+1)+"/"+total_file.length);
}
else {
dir.mkdir();
Path src=Paths.get(total_file[i].getPath());
Path dest=Paths.get(dir.getAbsolutePath().concat("\\").concat(total_file[i].getName()));// only needed to add this line.
Files.copy(src, dest ,StandardCopyOption.REPLACE_EXISTING);
System.out.println("Files copied: "+(i+1)+"/"+total_file.length);
}
}
}
public static void main(String[] args) {
try {
new OrgLogic();
} catch (IOException e) {
e.printStackTrace();
}
}
}