将文件复制到java中的特定目录中

时间:2018-01-02 15:03:34

标签: java file nio

以下是将文件从一个目录复制到另一个目录的代码。 例如:如果文件名是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

(功能:虽然在此处粘贴代码行号,但这样会很好。)

1 个答案:

答案 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();
    }
  }
}