Wie kann man eine temporäre Datei in Java erstellen

In einigen Fällen müssen Sie möglicherweise eine temporäre Datei in Java erstellen. Das geschieht häufig bei Unit-Tests, wenn die Ergebnisse nicht gespeichert werden müssen. Unmittelbar nach dem Abschluss des Tests brauchen Sie sich keine Sorgen um den Inhalt der Datei zu machen.

Hier, in diesem Artikel werden wir die Möglichkeiten lernen, wie man temporäre Dateien in Java erstellt. Es gibt zwei statische Methoden mit dem Namen createTempFile in der Java File-Klasse, eine, die zwei Argumente nimmt, und eine andere, die drei Argumente nimmt. Es wird uns helfen, eine temporäre Datei am Standard-Speicherort des temporären Ordners zu erstellen und eine andere wird verwendet, um eine temporäre Datei am angegebenen Speicherort des Ordners zu erstellen.

1. Verwenden Sie die Methode File.createTempFile(String prefix, String suffix)

Formal Syntax

public static File createTempFile(String prefix,
                  String suffix)
                           throws IOException

Das ist eine einfache Möglichkeit, eine temporäre Datei im temporären Verzeichnis des Betriebssystems zu erstellen.

Diese Methode erstellt eine leere Datei im Standard-Verzeichnis der temporären Datei und verwendet das angegebene Präfix und Suffix, um ihren Namen zu generieren. Der Aufruf dieser Methode ist gleichbedeutend mit dem Aufruf von createTempFile(prefix, suffix, null).

Es gibt einen abstrakten Pfadnamen, der eine frisch erstellte leere Datei angibt, zurück.

Diese Methode hat die folgenden Parameter:

  • prefix - Die Präfixzeichenkette, die bei der Generierung des Dateinamens verwendet werden soll; sie muss mindestens drei Zeichen lang sein.
  • suffix - Die Suffixzeichenkette, die bei der Generierung des Dateinamens verwendet werden soll; sie kann null sein, in diesem Fall wird die Suffix ".tmp" verwendet.

Beispiel

import java.io.File;
import java.io.IOException;
 
public class JavaTempFile {
 
	public static void main(String[] args) {
		try {
			File tmpFile = File.createTempFile("data", null);
			File newFile = File.createTempFile("text", ".temp", new File("/Users/name/temp"));
			System.out.println(tmpFile.getCanonicalPath());
			System.out.println(newFile.getCanonicalPath());
			// Schreiben, Lesen von Daten in eine temporäre Datei wie jede normale Datei
 
			// delete when application terminates
			tmpFile.deleteOnExit();
			newFile.deleteOnExit();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
}

Die Ausgabe für die obige Code-Datei lautet:

Ergebnis

/private/var/folders/1t/sx2jbcl534z88byy78_36ykr0000gn/T/data225458400489752329.tmp
/Users/name/temp/text2548249124983543974.temp
Die temporäre Datei wird nicht gelöscht, nachdem das Java-Programm beendet wurde, wenn Sie kein zweites Beispiel für eine temporäre Java-Datei erstellen, das die Methode Java File class deleteOnExit aufruft. Dieses Argument hat in der Tat einen großen Einfluss darauf, wie Ihre Java-Temporärdatei behandelt wird.

2. Verwenden Sie die Methode File.createTempFile(String prefix, String suffix, File directory)

Formal Syntax

public static File createTempFile(String prefix,
                  String suffix,
                  File directory)
                           throws IOException

Diese Methode erstellt eine neue leere Datei im angegebenen temporären Dateiverzeichnis und verwendet das angegebene Präfix und Suffix, um ihren Namen zu erstellen.

Das Präfixargument muss mindestens drei Zeichen lang sein. Es wird empfohlen, dass das Präfix eine kurze, sinnvolle Zeichenkette wie "ffn" oder "mail" ist. Das Suffix-Argument kann Null sein, in diesem Fall wird das Suffix ".tmp" verwendet.

Um die neue Datei zu erstellen, können zunächst das Präfix und das Suffix an die Einschränkungen der zugrunde liegenden Plattform angepasst werden. Wenn das Präfix zu lang ist, wird es abgeschnitten, aber seine ersten drei Zeichen bleiben immer erhalten. Wenn das Suffix zu lang ist, wird es ebenfalls abgeschnitten, aber wenn es mit einem Punktzeichen ('.') beginnt, dann bleiben der Punkt und die ersten drei folgenden Zeichen immer erhalten. Sobald diese Anpassungen vorgenommen wurden, wird der Name der neuen Datei erzeugt, indem das Präfix, fünf oder mehr intern generierte Zeichen und das Suffix zusammengefügt werden.

Diese Methode hat die folgenden Parameter:

  • prefix - Die Präfixzeichenkette, die bei der Generierung des Dateinamens verwendet werden soll; sie muss mindestens drei Zeichen lang sein.
  • suffix - Die Suffixzeichenfolge, die bei der Generierung des Dateinamens verwendet werden soll; sie kann Null sein, in diesem Fall wird die Suffix ".tmp" verwendet.
  • directory - Das Verzeichnis, in dem die Datei erstellt werden soll, oder null, wenn das Standard-Verzeichnis für temporäre Dateien verwendet werden soll.

Diese Methode gibt einen abstrakten Pfadnamen zurück, der eine kürzlich erstellte leere Datei anzeigt. Es wirft eine IOException, wenn die Datei nicht erstellt werden konnte, eine IllegalArgumentException, wenn das Präfixargument weniger als drei Zeichen enthält und eine SecurityException, wenn ein Sicherheitsmanager existiert und seine Methode java.lang.SecurityManager.checkWrite(java.lang.String) erlaubt es nicht, eine Datei zu erstellen.

Jetzt sehen wir uns die oben genannte Methode an:

Beispiel

import java.io.File;
import java.io.IOException;
 
public class TempFileExample {
 
   public static void main(String[] args) {
       try {
 
           File tempFile = File.createTempFile("hello", ".tmp");
           System.out.println("Temp file On Default Location: " + tempFile.getAbsolutePath());
           tempFile = File.createTempFile("hello", ".tmp", new File("C:/"));
           System.out.println("Temp file On Specified Location: " + tempFile.getAbsolutePath());
 
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

Die Ausgabe dafür ist wie folgt:

Ergebnis

Temp-Datei am voreingestellten Speicherort: C:\Users\swami\AppData\Local\Temp\hello7828748332363277400.tmp
Temp-Datei am angegebenen Speicherort: C:\hello950036450024130433.tmp
Im Falle von Unit-Tests mit Junit können Sie auch TemporaryFolder verwenden. Die Regel TemporaryFolder ermöglicht das Erstellen von Dateien und Ordnern, die nach Beendigung der Testmethode garantiert gelöscht werden (unabhängig davon, ob sie übergeben wird oder nicht).

Als Fazit hier einige Hinweise zur Java File Klasse temporäre Dateien:

  • Rufen Sie die Methode deleteOnExit() mit der Drei-Argumente-Version der Methode createTempFile() auf, um die temporäre Datei automatisch zu entfernen.
  • In Bezug auf deleteOnExit() liefert Javadoc die Information, dass das Löschen nur für den normalen Abbruch der virtuellen Maschine versucht wird, wie in der Java Language Specification definiert ist.