【问题标题】:Java - Copy file to another directory using FileUtils and copyFileToDirectory - doesn't work -?Java - 使用 FileUtils 和 copyFileToDirectory 将文件复制到另一个目录 - 不起作用 - ?
【发布时间】:2012-02-10 21:58:56
【问题描述】:

我想使用 Java 和 apache org commons 的 FileUtils 类将文件从一个目录复制到另一个目录。

我编写了一个快速的 java 程序来在我的本地系统上进行测试。这是代码。该文件存在,但无法将文件复制到另一个目录。我错过了什么?是不是有什么不恰当的语法?

import org.apache.commons.io.FileUtils;
import java.io.File;

class MoveFile {

    public static void main(String[] args) {
        MoveFile myobj = new MoveFile();
        myobj.moveTheFile();
    }

    public void moveTheFile () {
        try {
            File destDir = new File("C:\\Folder1\\temp2");
            File srcFile = new File("C:\\Folder1\\temp\\card.png");
            FileUtils.copyFileToDirectory(srcFile, destDir);
        } catch(Exception e) {
        }
    }

}

【问题讨论】:

  • 什么意思不工作?有什么错误吗?数据未复制?
  • 初始文件是否存在?目标目录是否存在?异常失败时说明了什么?
  • 文件和目录都存在。没有记录异常。
  • 太棒了,这个问题帮助我解决了我的答案。

标签: java apache file fileutils


【解决方案1】:

复制了您的错误,并且仅当程序无权写入目标文件夹时才会失败。即使捕获一个可抛出的并打印堆栈跟踪也没有显示任何信息,并且该方法非常安静……如果该文件夹不存在,该方法会创建它,从而忽略可能的更正。

检查目标文件夹中的写入权限

【讨论】:

  • 我忽略了目标目录变量中的一个错误 - 它应该是 Folder1/temp/temp2。该目录具有“只读”权限,因此我对其进行了更改。现在测试程序可以工作了。感谢您的帮助。
【解决方案2】:

吞下异常绝不是一个好主意。在您的异常处理机制中执行e.printstacktrace() 以获取更多信息。由于您没有指定任何其他信息,因此首先想到的是,如果您使用的是 Windows vista 或更高版本,通常在将项目直接放入您的 C:\ 目录时会征求您的管理员同意。

要查看这是否是问题所在,我建议您在其他目录中进行测试,例如 My Documents,否则,请禁用 UAC。

【讨论】:

    【解决方案3】:

    destDir.mkdirs();
    

    FileUtils.forceMkdir(destDir);
    

    首先创建目录temp2

    【讨论】:

    • temp2 目录已在系统上创建,因此无需创建该目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2010-11-11
    • 2019-04-17
    • 1970-01-01
    相关资源
    最近更新 更多