将搜索到的文件复制到特定位置

时间:2013-08-02 06:42:45

标签: java

我编写了一个程序,用于在我的PC中搜索具有给定扩展名的文件。现在我想再添加一件东西。我希望我的程序将这些文件复制到我电脑上的特定位置。这是我的代码示例: -

Finder(String pattern) 
    {
        matcher = FileSystems.getDefault().getPathMatcher("glob:" + pattern);
   }

    // Compares the pattern against
    // the file or directory name.
    void find(Path file) {
        Path name = file.getFileName();
        if (name != null && matcher.matches(name)) {
            System.out.println(file);
            String s = new String(name.toString());
            //System.out.println(s);
            File f = new File(s);
            //System.out.println(f.getAbsolutePath());
            FileInputStream fileInputStream = null;

4 个答案:

答案 0 :(得分:0)

如果您要复制的文件有FileInputStream,则可以创建FileOutputStream输出到要复制文件的位置。然后,使用如下所示的循环来复制文件:

byte temp;
while ((temp = fileInputStream.read()) != -1)
    fileOutputStream.write(temp);

答案 1 :(得分:0)

要快速执行此操作,您可以使用Apache Commons IO中的方法FileUtils.copyFileToDirectory

答案 2 :(得分:0)

使用FileVistitor接口传递文件树有很多新的好方法。点击here。在接近符合条件的文件后,使用一些高性能的新io:

移动它
public static void copyFile(File sourceFile, File newDirectory) throws IOException {
    File destFile = new File(newDirectory, sourceFile.getName());
    if(!destFile.exists()) {
        destFile.createNewFile();
    }

    FileChannel source = null;
    FileChannel destination = null;
    try {
        source = new FileInputStream(sourceFile).getChannel();
        destination = new FileOutputStream(destFile).getChannel();
        destination.transferFrom(source, 0, source.size());
    }
    finally {
        if(source != null) {
            source.close();
        }
        if(destination != null) {
            destination.close();
        }
    }
}

在参数“newDirectory”中定义要移动文件的目录

答案 3 :(得分:0)

你的问题毫无疑问! 如果您询问如何复制文件,您可以选择:

  • 使用java.nio.file.Files.copy()方法。这是首选,因为您不必自己复制数据,可以使用Path并且它在标准库中
  • 按照其他答案的建议自行使用流和复制数据

  • 还有其他方法可以在系统上调用命令来复制