Ce face Files.createTempFile
Files.createTempFile("raport-", ".txt") creează un fișier gol cu un nume unic, de forma raport- + un număr aleatoriu + .txt, în folderul temporar al sistemului (proprietatea java.io.tmpdir). Numele nu se repetă, deci două programe nu se calcă pe picioare.
Varianta cu un Path la început creează fișierul în folderul dat. Dacă sufixul este null, se folosește .tmp. Fișierul nu se șterge singur: șterge-l cu Files.deleteIfExists când nu mai ai nevoie de el. Pentru foldere există Files.createTempDirectory.
Parametri
| Parametru | Descriere |
|---|---|
folder |
Opțional: unde se creează fișierul. |
prefix |
Începutul numelui (poate fi null). |
sufix |
Sfârșitul numelui, de obicei extensia (null înseamnă .tmp). |
Ce returnează
Calea fișierului nou creat.
Exemple
Exemplul 1: Fișier temporar cu nume unic
Numele exact diferă la fiecare rulare, așa că afișăm doar ce știm sigur: începutul, sfârșitul și că fișierul e gol.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws IOException {
Path temp = Files.createTempFile("raport-", ".txt");
String nume = temp.getFileName().toString();
System.out.println("Începe cu raport-: " + nume.startsWith("raport-"));
System.out.println("Se termină cu .txt: " + nume.endsWith(".txt"));
System.out.println("Mărime: " + Files.size(temp));
Files.writeString(temp, "Total vânzări: 3.400 lei");
System.out.println(Files.readString(temp));
System.out.println("Șters: " + Files.deleteIfExists(temp));
}
}
Rezultat
Începe cu raport-: true
Se termină cu .txt: true
Mărime: 0
Total vânzări: 3.400 lei
Șters: true
Exemplul 2: Două fișiere temporare în folderul curent
Chiar cu același prefix, numele sunt diferite.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws IOException {
Path aici = Path.of(".");
Path a = Files.createTempFile(aici, "export-", ".csv");
Path b = Files.createTempFile(aici, "export-", ".csv");
System.out.println("Nume diferite: " + !a.getFileName().equals(b.getFileName()));
System.out.println("Sunt în folderul curent: " + a.getParent().equals(aici));
Files.delete(a);
Files.delete(b);
}
}
Rezultat
Nume diferite: true
Sunt în folderul curent: true
Greșeli frecvente
- Crezi că fișierul temporar dispare singur la sfârșitul programului. Rămâne pe disc; șterge-l tu.
- Construiești singur nume „unice” cu ora curentă. Două rulări în aceeași secundă dau același nume;
createTempFileevită asta.
Comenzi înrudite
Files.delete: Șterge un fișier sau un folder gol; delete aruncă excepție dacă lipsește, deleteIfExists doar returnează false.Files.writeString: Scrie un text într-un fișier (UTF-8): îl creează sau îl suprascrie; cu StandardOpenOption.APPEND adaugă la final.Path.getFileName: getFileName dă ultimul nume din cale (fișierul), iar getParent calea fără ultimul nume (folderul care îl conține).Files: Clasa cu metode statice pentru lucrul cu fișiere și foldere: citire, scriere, copiere, mutare, ștergere, listare.