Search code examples
javaioexceptionbambootemporary-files

IOException when creating a temporary file?


I'm creating a task plugin for Atlassian Bamboo. At some moment of task executing, I would like to create a temporary file:

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

, where:

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

When testing this locally, everything works fine - the file is created properly. However, after I deploy plugin on server and try to execute above code, I've got an 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)

What could be the reason?

Additional info: I'm pretty sure that dir.exists() .


Solution

  • A file name of

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

    is valid on Windows but is invalid on Unix operating systems. You won't be able to create a (temp) file like that, either as specified as the absolute name/path or the file nor just relative to another folder.

    If your OS is Windows, you still can't use a full path (starting with drive specification like "C:") to be created as a child of another folder.