0

我编写了一个程序,它将在我的 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

4 回答 4

0

获得要复制的文件的FileInputStreams 后,您可以创建FileOutputStreams 输出到要复制文件的位置。然后,使用如下循环来复制文件:

byte temp;
while ((temp = fileInputStream.read()) != -1)
    fileOutputStream.write(temp);
于 2013-08-02T06:46:43.960 回答
0

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

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

  • 还有其他方法,例如在系统上调用命令进行复制

于 2013-08-02T06:53:20.060 回答
0

您可以使用Apache Commons IO 中的FileUtils.copyFileToDirectory方法来快速完成此操作。

于 2013-08-02T06:48:53.487 回答
0

使用 FileVistitor 界面浏览文件树有很多新的好方法。点击这里。在接近符合您的条件的文件后,使用一些高性能的新 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”中定义要移动文件的目录

于 2013-08-02T06:50:30.447 回答