Java - 如何使用FileUtils移动文件?

时间:2017-04-04 23:13:27

标签: java file io move fileutils

每个人都在说使用fileutils将文件从a点移动到b点是多么简单,但我在移动文件时遇到了很多麻烦:(

我在.jar所在的目录中有一个/ temp /文件夹,在这个临时文件夹中我有一个.txt文件我要向上移动一个目录(所以基本上在.jar文件旁边)但我不能好像这样做?

这是一些代码,但我知道它甚至没有关闭:

public void replaceFile() {
    String absolutePath = getPath();
    Path from = Paths.get(absolutePath + "\\temp\\test.txt");
    Path to = Paths.get(absolutePath + "\\test.txt");

    try {
        FileUtils.moveFile(FileUtils.getFile(from.toAbsolutePath().toString()), FileUtils.getFile(to.toAbsolutePath().toString()));
        JOptionPane.showMessageDialog(null, "test");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public String getPath() {
    File jarDir = new File(ClassLoader.getSystemClassLoader().getResource(".").getPath());
    //JOptionPane.showMessageDialog(null, jarDir.getAbsolutePath());
    return jarDir.getAbsolutePath();
}

感谢任何帮助:\

2 个答案:

答案 0 :(得分:2)

为什么不将此Java API用于Moving a File or Directory

Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);

<强>更新

查看源代码我建议采用以下实现:

Path from = Paths.get(absolutePath, "/temp/test.txt");
Path to = Paths.get(absolutePath, "/test.txt");

try {
    Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);
    JOptionPane.showMessageDialog(null, "test");
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

答案 1 :(得分:1)

好吧我设法做到了,显然getPath()方法返回了一些有趣的路径并且它在那里失败了,所以继承人的代码是可行的

public void downloadJar() {
    String absolutePath = getPath();
    String from = absolutePath + "\\temp\\test.txt";
    String to = absolutePath + "\\test.txt";
    File fileTo = new File(to);
    File fileFrom = new File(from);


    try {
        FileUtils.moveFile(fileFrom, fileTo);
        JOptionPane.showMessageDialog(null, "test");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, "io exce");
    }

}

public String getPath() {
    return System.getProperty("user.dir");
}

谢谢大家