2012-08-22 56 views
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中,尽管试图删除它们,但我无法做到这一点。

注意该程序正在通过运行RHEL6的计算机上的cron作业调用的bash脚本调用。任何能够帮助的人都会得到我不变的爱和欣赏。

编辑: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 

铊; DR:文件运行在windows细,当RHEL6调用一个cron,文件最终,他们不应该。我怎样才能让我的程序处理这个?

+0

因此,文件是在意想不到的地方创建的,还是在程序退出时不会被删除? – Alex

+0

两者。 10个字符 –

回答

2

它看起来像working directory/etc/cron.d/(可执行路径不同)。

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

+2

您可以在调用Java程序之前将'cd desired-directory'添加到bash脚本中。 – chepner

+0

或者在每个系统上设置一个环境变量,并在Java代码中检索它并将其附加到文件名作为路径。 – Dan

+0

@ Damien.Bell,有没有原因你不使用File.Delete()'? – EthanB

0

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