我正在为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()
。
答案 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
指定)。
您可以使用dir
dir.exists()
是否存在
答案 3 :(得分:0)
我有一些竹子的经验,但在Linux上。你能检查一下你是否拥有创建该文件的权限吗?