当前位置: 首页 > 知识库问答 >
问题:

使用Apache Commons FileUtils复制文件

董谦
2023-03-14

在第一次运行时,我想用新文件名将给定的文件复制到新位置。

每次后续运行都应覆盖第一次运行期间创建的相同目标文件。

在第一次运行期间,目标文件不存在。只有目录存在。

我编写了以下程序:

package myTest;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Paths;

import org.apache.commons.io.FileUtils;

public class FileCopy {

    public static void main(String[] args) {
        TestFileCopy fileCopy = new TestFileCopy();
        File sourceFile = new File("myFile.txt");
        fileCopy.saveFile(sourceFile);
        File newSourceFile = new File("myFile_Another.txt");
        fileCopy.saveFile(newSourceFile);
    }
}

class TestFileCopy {
    private static final String DEST_FILE_PATH = "someDir/";
    private static final String DEST_FILE_NAME = "myFileCopied.txt";

    public void saveFile(File sourceFile) {
        URL destFileUrl = getClass().getClassLoader().getResource(DEST_FILE_PATH
                + DEST_FILE_NAME);
        try {
            File destFile = Paths.get(destFileUrl.toURI()).toFile();
            FileUtils.copyFile(sourceFile, destFile);
        } catch (IOException | URISyntaxException e) {
            e.printStackTrace();
        }
    }
}

但是,这会在以下行引发空指针异常:

File destFile = Paths.get(destFileUrl.toURI()).toFile();

我错过了什么?目录someDir直接位于eclipse中项目的根目录下。两个源文件都是myFile。txt和myFile\u另一个。txt直接存在于eclipse中项目的根目录下。

共有1个答案

赵涵亮
2023-03-14

我用了这个,它就像我所期待的那样:

public void saveFile1(File sourceFile) throws IOException {
        Path from = sourceFile.toPath();
        Path to = Paths.get(DEST_FILE_PATH + DEST_FILE_NAME);
        Files.copy(from, to, StandardCopyOption.REPLACE_EXISTING);
    }

使用Java nio。

 类似资料:
  • 问题内容: 我想使用Python制作netcdf文件的副本。 关于如何读取或写入netcdf文件,有很多很好的示例,但是也许还有一个很好的方法,可以进行变量的输入,然后输出到另一个文件。 一个好的方法很不错,以便以最低的成本获得尺寸和尺寸变量到输出文件。 问题答案: 我在python netcdf上 找到了此问题的答案:制作了所有变量和属性的一个副本,但一个副本,但我需要对其进行更改以使其与我的p

  • 使用Java8。 为了获得最佳性能,我尝试用复制文件,但很快发现它不支持汉字。例如: 代码打算从jar复制一个文件,但它抛出了一个异常(a“我的" 文件夹已提前创建): 问题是鎴戠殑" 甚至连一个中国人都看不懂,所以我正在寻找一个解决办法来处理汉字。 我也尝试了FileChannel,但失败了,意识到它用于直接文件,而不是在一个jar中的文件。我该怎么做?

  • 我是新使用python阅读文本文件。我需要读一个文件,每行有4个我需要的数据,这是我的文本文件 我的问题是,如果我使用,它只用每行创建一个向量,但是我只需要一个向量用于第一列,一个用于第二列,一个用于第三列,还有一个用于第四列...有谁能帮帮我吗?

  • 问题内容: 除了以下以外,任何人都有另一种在bash中查找和复制文件的方式: 我喜欢这种方式,因为它很灵活,因为我正在构建命令(可以通过任何命令执行)并在之后执行它。 还有其他简化命令到文件列表的方法吗? 谢谢 问题答案: 我建议使用的选项: 与往常一样,请查阅手册页以获得最佳结果。

  • 我正在使用骆驼复制文件,但它没有发生,我正在使用Mac。抛出的消息为

  • 进程无法访问文件'd:\app_data\',因为另一个进程正在使用它。 这是我一直在用的代码