创建临时文件时是否存在IOException?

时间:2014-08-14 12:31:15

标签: java ioexception bamboo temporary-files

我正在为Atlassian Bamboo创建一个任务插件。在任务执行的某个时刻,我想创建一个临时文件:

File temp = File.createTempFile(fileName.toString(), null, dir);
temp.deleteOnExit();

,其中:

fileName.toString() = e.g. "C:\Atlassian\bamboo-home\xml-data\build-dir\CMPT-CMPTP-JOB1\test.java"
dir = new File("temp");

在本地测试时,一切正常 - 文件正确创建。但是,在服务器上部署插件并尝试执行上面的代码之后,我遇到了IOException:

java.io.IOException: The filename, directory name, or volume label syntax is incorrect
        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
        at java.io.File.createTempFile(File.java:1879)

可能是什么原因?

其他信息:我很确定dir.exists()

4 个答案:

答案 0 :(得分:1)

文件名

"C:\Atlassian\bamboo-home\xml-data\build-dir\CMPT-CMPTP-JOB1\test.java"

在Windows上有效,但在Unix操作系统上无效。您无法创建这样的(临时)文件,无论是指定为绝对名称/路径还是文件,还是仅相对于另一个文件夹。

如果您的操作系统是Windows,您仍然无法使用完整路径(从驱动器规范开始,如"C:")创建为另一个文件夹的子项。

答案 1 :(得分:1)

您可以在路径的开头或结尾留出空格,打印file.getAbsolutePath()以查看java正在阅读的当前路径。

答案 2 :(得分:0)

必须使用目录dir的完整(或相对)路径设置temp变量。 File.createTempFile的第一个arg应该是临时文件的前缀(至少三个字母长。例如“test”)。这将在给定目录中创建一个“test.tmp”(由变量dir指定)。

检查the javadoc

您可以使用dir

检查目录dir.exists()是否存在

答案 3 :(得分:0)

我有一些竹子的经验,但在Linux上。你能检查一下你是否拥有创建该文件的权限吗?