如何将所有文件从一个路径移动到另一个路径(JAVA中扩展名为.txt的文件除外)?

如何将所有文件从一个路径移动到另一个路径(JAVA中扩展名为.txt的文件除外)?,java,file,io,Java,File,Io,我使用下面的代码将zip文件从一个目录移动到另一个目录。类似地,我想移动所有目录和文件,除了该目录中存在的文本文件。我怎么做 Files.move(Paths.get("D:/Zip/"+zip.getName()), Paths.get("D:/Archive/"+zip.getName())); 我想这就是你想要的,如果你只是想过滤以.txt结尾的文件。这里我使用的是Apache公共IO库 @Test public void copyDirectory() throws IOExcepti

我使用下面的代码将zip文件从一个目录移动到另一个目录。类似地,我想移动所有目录和文件,除了该目录中存在的文本文件。我怎么做

Files.move(Paths.get("D:/Zip/"+zip.getName()), Paths.get("D:/Archive/"+zip.getName()));

我想这就是你想要的,如果你只是想过滤以
.txt
结尾的文件。这里我使用的是Apache公共IO库

@Test
public void copyDirectory() throws IOException {
    FileFilter txtFilterer = new FileFilter() {
        @Override
        public boolean accept(File file) {
            return !file.getName().endsWith(".txt");
        }
    };
    FileUtils.copyDirectory(new File("D:/Zip"), new File("C:/Archive"), txtFilterer);
    FileUtils.cleanDirectory(new File("D:/Zip"));
}

如果你不能访问第三方LIB,你可以看看。希望这对你有所帮助,如果你只是想过滤以
.txt
结尾的文件,我想这就是你想要的。这里我使用的是Apache公共IO库

@Test
public void copyDirectory() throws IOException {
    FileFilter txtFilterer = new FileFilter() {
        @Override
        public boolean accept(File file) {
            return !file.getName().endsWith(".txt");
        }
    };
    FileUtils.copyDirectory(new File("D:/Zip"), new File("C:/Archive"), txtFilterer);
    FileUtils.cleanDirectory(new File("D:/Zip"));
}

如果你不能访问第三方LIB,你可以看看。希望这有帮助

您可以尝试过滤所有没有扩展名.txt的文件,并使用循环中已有的代码移动所有其他文件。例如:

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 Example1 {
    public static void main(String[]args){
        final String extension = ".txt";
        final File sourceDir = new File("D:/Zip/");
        final File destinationDir = new File("D:/Archive/");
        File[] files = sourceDir.listFiles((File pathname) -> !pathname.getName().endsWith(extension));
        for(File f : files ){
            Path sourcePath      = Paths.get(sourceDir.getAbsolutePath()+"\\"+f.getName());
            Path destinationPath = Paths.get(destinationDir.getAbsolutePath()+"\\"+f.getName());

            try {
                Files.move(sourcePath, destinationPath,StandardCopyOption.REPLACE_EXISTING);
            } catch (IOException e) {
                //moving file failed.
                e.printStackTrace();
            }
        }        
    }        
}

您可以尝试过滤所有没有扩展名.txt的代码,并使用循环中已有的代码移动所有其他代码。例如:

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 Example1 {
    public static void main(String[]args){
        final String extension = ".txt";
        final File sourceDir = new File("D:/Zip/");
        final File destinationDir = new File("D:/Archive/");
        File[] files = sourceDir.listFiles((File pathname) -> !pathname.getName().endsWith(extension));
        for(File f : files ){
            Path sourcePath      = Paths.get(sourceDir.getAbsolutePath()+"\\"+f.getName());
            Path destinationPath = Paths.get(destinationDir.getAbsolutePath()+"\\"+f.getName());

            try {
                Files.move(sourcePath, destinationPath,StandardCopyOption.REPLACE_EXISTING);
            } catch (IOException e) {
                //moving file failed.
                e.printStackTrace();
            }
        }        
    }        
}

查看文件。walkFileTree(路径,访问者)查看复制选项,这是Files.move方法的第三个参数。@Files.walkFileTree的工作方式几乎与之类似,我仍然不知道如何移动除此之外的所有内容。txt@Nerzid我在文档中只看到了两个复制选项替换现有和原子移动第一个我认为对我没有帮助第二个我真的不明白我也读了我认为它解决不了我的问题。看看文件。walkFileTree(路径,访问者)看看复制选项,这是Files.move方法的第三个参数。@Files.walkFileTree的工作方式几乎与之类似,我仍然不知道如何移动除此之外的所有内容。txt@Nerzid我在文档中只看到了两个复制选项替换现有和原子移动第一个我认为对我没有帮助第二个我真的不明白我也读了我认为它解决不了我的问题。这不起作用,因为FileUtils.copyDirectory(path,path,boolean)期望布尔值它抛出一个错误,而且它将从我在这里了解的复制目录我需要移动文件夹,即src目录中的那些文件和文件夹将被删除我正在使用公共io 2.1,它具有
copyDirectory(文件srcDir,文件destDir,文件过滤器过滤器)
并允许传递
文件过滤器
。我修改了上面的代码以显示
FileUtils.cleanDirectory
这也不起作用,因为FileUtils.copyDirectory(path,path,boolean)期望布尔值它抛出一个错误,而且它将从我在这里了解的复制目录我需要移动文件夹,即src目录中的那些文件和文件夹将被删除我正在使用公共io 2.1,它具有
copyDirectory(文件srcDir,文件destDir,文件过滤器过滤器)
并允许传递
文件过滤器
。我修改了上面的代码以显示
FileUtils.cleanDirectory