Java 如何将文件复制到其他目录

Java 如何将文件复制到其他目录,java,Java,我在一个文件夹中列出文件,然后我必须将它们转移到另一个文件夹。然而,我遇到的问题是。。。当尝试将它们粘贴到另一个文件夹时,路径类似于E:\Files,这会导致我生成某种文件,但它不会像应该的那样粘住我。我尝试了几种方法,但仍然不能做到这一点,我留下我的代码,看看你是否可以帮助我 Path algo = Paths.get("E:/Files/"); public void Copy(String origenArchivo, Path algo) { Pa

我在一个文件夹中列出文件,然后我必须将它们转移到另一个文件夹。然而,我遇到的问题是。。。当尝试将它们粘贴到另一个文件夹时,路径类似于E:\Files,这会导致我生成某种文件,但它不会像应该的那样粘住我。我尝试了几种方法,但仍然不能做到这一点,我留下我的代码,看看你是否可以帮助我

 Path algo = Paths.get("E:/Files/");
   public void Copy(String origenArchivo, Path algo) {
                Path origenPath = Paths.get(origenArchivo);
                String s = algo.toAbsolutePath().toString();
                System.out.println(s);
                Path destinoPath = Paths.get(s);
                System.out.println(destinoPath);
                String x = destinoPath.toString() + "/";

                Path conv = Paths.get(x);
                System.out.println(conv);
        try {

            Files.copy(origenPath, conv, StandardCopyOption.REPLACE_EXISTING);
               } catch (IOException ex) {
            Logger.getLogger(Metodos.class.getName()).log(Level.SEVERE, null, ex);
        }



    }




 File dir = new File("C:/Users/PC/Desktop/");
        public void TravelToFantasy(File dir) {
        File listFile[] = dir.listFiles();
        if (listFile != null) {
            for (int i = 0; i < listFile.length; i++) {
                if (listFile[i].isDirectory()) {
                    Copy(listFile[i]);
                } else {
                    System.out.println(listFile[i].getPath());
                    System.out.println(destino);
                    this.Copy(listFile[i].getPath(), algo);

                }
            }
        }
         }
Path algo=Path.get(“E:/Files/”;
公共无效副本(字符串origenArchivo,路径算法){
Path origenPath=Path.get(origenArchivo);
字符串s=algo.toabsolutionPath().toString();
系统输出打印项次;
Path destinoPath=Path.get;
System.out.println(destinoPath);
字符串x=destinoPath.toString()+“/”;
Path conv=Path.get(x);
系统输出打印项次(conv);
试一试{
复制(origenPath、conv、StandardCopyOption.REPLACE_EXISTING);
}捕获(IOEX异常){
Logger.getLogger(Metodos.class.getName()).log(Level.SEVERE,null,ex);
}
}
文件目录=新文件(“C:/Users/PC/Desktop/”;
公共作废TravelToFantasy(文件目录){
文件listFile[]=dir.listFiles();
if(listFile!=null){
for(int i=0;i
我试图将“/”放在路径路径中。get得到我,但它总是将路径作为E:\Files留给我


谢谢你

使用java.io.File.separator而不是“/”,这将有助于您的代码运行任何操作系统。

您不能将目录传递给Files.copy

您不需要所有与字符串之间的转换。只需使用:

作为旁注,Path/Path/Files类优于java.io.File类,因为它们在操作失败时提供有意义的信息。您根本不应该使用java.io.File:

Path dir = Paths.get("C:/Users/PC/Desktop/");

public void TravelToFantasy(Path dir)
throws IOException {
    try (DirectoryStream<Path> listFile = Files.newDirectoryStream(dir)) {
        for (Path file : listFile) {
            if (Files.isDirectory(file)) {
                Copy(file);
            } else {
                System.out.println(file);
                System.out.println(destino);
                this.Copy(file, algo);
            }
        }
    }
}
Path dir=Path.get(“C:/Users/PC/Desktop/”;
公共空间TravelToFantasy(路径方向)
抛出IOException{
try(DirectoryStream listFile=Files.newDirectoryStream(dir)){
用于(路径文件:listFile){
if(Files.isDirectory(file)){
复印件(档案);
}否则{
System.out.println(文件);
系统输出打印号(destino);
此.Copy(文件,algo);
}
}
}
}

不起作用。。。我添加以下内容:String x=destinoPath.toString()+File.separator;但这不管用,这管用!非常感谢VGR,我理解,一切正常。
Path dir = Paths.get("C:/Users/PC/Desktop/");

public void TravelToFantasy(Path dir)
throws IOException {
    try (DirectoryStream<Path> listFile = Files.newDirectoryStream(dir)) {
        for (Path file : listFile) {
            if (Files.isDirectory(file)) {
                Copy(file);
            } else {
                System.out.println(file);
                System.out.println(destino);
                this.Copy(file, algo);
            }
        }
    }
}