0

所以我有一个运行类似于以下内容的程序

public class SHandler extends Handler { 
    File lmpFile;

在程序的后面:

lmpFile = new File("Stuff.zip"); // This should create a file called "stuff.zip" in the present directory
OutputStream fos = new FileOutputStream(lmpFile); // Fill the file with whatever

然后从我的主要我打电话

 S.SHandler SpecialSH = new S.SHandler(args);
 //use the object for whatever
 SpecialSH.delFile();

Delfile 是这样制作的,是类内部的一个方法:

public void delFile() {
    lmpFile.deleteOnExit();
    lmpXMLFile.deleteOnExit();
}

据我所知,这个程序可以在我的本地机器(Windows 7 Enterprise)上运行,但是在我们的开发机器上,当我运行它时,它会扔掉很多文件,程序会把这些文件拉到所有地方。执行路径是 /usr/data/dev/Handler ,它把“stuff.zip”(以及从中提取的文件)放在 /etc/cron.d 中,尽管试图删除它们,但我无法删除它们。

注意该程序是通过 bash 脚本调用的,该脚本由运行 RHEL6 的机器上的 cron 作业调用。任何能够帮助这件事的人都会得到我永恒的爱和感激。

编辑: bash 脚本很简单:

export JAVA_HOME=/usr/data/java/current
export PATH=$JAVA_HOME/bin:$PATH

/usr/data/java/current/bin/java -jar /usr/data/dev/Handler/Handler.jar

Tl;DR:文件在 Windows 上运行良好,当 RHEL6 调用 cron 时,文件最终会出现在不应该出现的地方。我怎样才能让我的程序处理这个?

4

2 回答 2

2

看起来工作目录/etc/cron.d/(可执行路径不同)。

相对路径(使用java.io.File时)是相对于工作目录的。如果您希望将文件放在不同的目录中,请使用绝对文件路径:(/path/to/stuff.zip注意前导斜杠)。

于 2012-08-22T17:30:13.977 回答
0

也许这些文件没有关闭,当删除发生时,或者其他程序使用它们?

于 2012-08-22T18:13:03.740 回答