我编写了一个程序,用于在我的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;
答案 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并且它在标准库中按照其他答案的建议自行使用流和复制数据
还有其他方法可以在系统上调用命令来复制