copyFile在IDE中运行但不在生产中

时间:2015-09-16 02:38:24

标签: java netbeans

我需要将文件从工作目录复制到存档目录,因此我使用以下代码:

private void copyToArchive(Date today) {
    try {
        File source = new File("final.txt");
        String msg = "getting source file " + source;
        displayMessage(msg, good); // good points to a sound file
        File destination = new File("archives\\final." + today + ".txt");
        msg = "getting destination file " + destination;
        displayMessage(msg, good);
        FileUtils.copyFile(source, destination);
        msg = "finished trying to copy file";
        displayMessage(msg, good);
    } catch (IOException ex) {
        String message = "archiving failed";
        displayMessage(message, bad);
        Logger.getLogger(FileManagerController.class.getName()).log(Level.SEVERE, null, ex);
    }
}

问题是,这在IDE中运行良好,但在生产中它只能成功地声明“目标”。在IDE中,我得到了“完成尝试复制文件”通知(以及子目录“archives”中复制的文件),但在生产中,我从NEException catch获取确认NOR“存档失败”通知(和子目录中没有复制的文件。)

帮助?

(我运行NetBeans 7.4,程序在JDK版本1.7.0_55上运行(无法升级,因为我们运行的另一个java程序不能在以后的java版本上运行)。)

2 个答案:

答案 0 :(得分:0)

我不确定这是不是你的问题,但是

File destination = new File("archives\\final." + today + ".txt");

应该是

File destination = new File("archives","final." + today + ".txt");

可移植到\\不是目录分隔符的文件系统。

答案 1 :(得分:0)

您可以尝试使用Java工作目录。它可以通过以下方式检索:

String workingDir = System.getProperty("user.dir");

这将返回您项目的路径。

因此,在您的情况下,您的代码将如下所示:

private void copyToArchive(Date today) {
    try {
        File source = new File("final.txt");
        String msg = "getting source file " + source;
        displayMessage(msg, good); // good points to a sound file
        File destination = new File(workingDir + "archives\\final." + today + ".txt");
        msg = "getting destination file " + destination;
        displayMessage(msg, good);
        FileUtils.copyFile(source, destination);
        msg = "finished trying to copy file";
        displayMessage(msg, good);
    } catch (IOException ex) {
        String message = "archiving failed";
        displayMessage(message, bad);
        Logger.getLogger(FileManagerController.class.getName()).log(Level.SEVERE, null, ex);
    }
}

重要提示:也许您还需要编写文件权限。在这里,您有一个如何阅读/设置权限的非常好的示例:http://www.mkyong.com/java/how-to-set-the-file-permission-in-java/