'create a temporary file with a specified name in java

I have a Byte[] array that i want to put it's content into a temporary file .

I have tryied to do it like this

try {
            tempFile = File.createTempFile("tmp", null);
            FileOutputStream fos = new FileOutputStream(tempFile);
            fos.write(sCourrier.getBody());
        } catch (IOException e) {
            e.printStackTrace();
        }

but i want that I specify the filename by myself so not generated by the jvm



Solution 1:[1]

You can directly give the location and file name or You can access local filesystem and find the temp directory

 String tempDir=System.getProperty("java.io.tmpdir");

you can use temp directory and your custom file name.

public static void main(String[] args) {
    try {
        String tempDir=System.getProperty("java.io.tmpdir");
        String sCourrier ="sahu";
        File file = new File(tempDir+"newfile.txt");
        FileOutputStream fos = new FileOutputStream(file);
        fos.write(sCourrier.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }

Solution 2:[2]

You can use Guava Files.createTempDir():

File file = new File(Files.createTempDir(), fileName.txt);

But because the API is deprecated and they also recommend to use Nio with more params:

Path createTempDirectory(String prefix, FileAttribute<?>... attrs)

so it would be better if you have a method yourself:

File createTempFile(String fileName, String content) throws IOException {
        String dir = System.getProperty("java.io.tmpdir");
        File file = new File(dir + fileName);
        try (FileOutputStream fos = new FileOutputStream(file)) {
            fos.write(content.getBytes(StandardCharsets.UTF_8));
        }
        return file;
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Hung Nguyen Duy