[Java 7 ou version ultérieure] Empêcher l'omission de la suppression de fichiers temporaires

Objectif

Empêche d'oublier de supprimer un fichier temporaire ou de se terminer sans supprimer le fichier au moment d'une interruption anormale.

Exemple d'implémentation

Supprimer le fichier à l'aide de l'instruction de suppression

Supprimer le fichier temporaire avec l'instruction de suppression


    Path path = null;
    try {
        //Création de fichiers temporaires
        path = Files.createTempFile("test", ".tmp");
        OutputStream out = Files.newOutputStream(path);
        String data = "test";
        out.write(data.getBytes());

        //Écrire dans un fichier
        out.flush();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        //Supprimer le fichier à la fin du traitement
        Files.deleteIfExists(path);
    }

Dans cette implémentation, il semble qu'il ne puisse pas être supprimé lorsque la JVM se termine anormalement.

Supprimer le fichier à l'aide de DELETE_ON_CLOSE

DELETE_ON_Suppression de fichiers temporaires avec CLOSE


    Path path = null;
    try {
        //Création de fichiers temporaires
        path = Files.createTempFile("test", ".temp");
        try (BufferedWriter bw = Files.newBufferedWriter(path, StandardOpenOption.DELETE_ON_CLOSE)) {
            String data = "test";
            //Écrire dans un fichier
            bw.write(data);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

Lorsque DELETE_ON_CLOSE de StandardOpenOption est utilisé comme option lors de l'ouverture d'un fichier Les fichiers sont automatiquement supprimés lorsque le flux est fermé. De plus, en utilisant la syntaxe «try-with-resources», la fermeture et la suppression de fichiers sont automatiquement exécutées sans implémenter le processus de fermeture, donc l'implémentation est soignée et il n'y a pas d'omissions.

Recommended Posts

[Java 7 ou version ultérieure] Empêcher l'omission de la suppression de fichiers temporaires
Exemple de programme d'entrée / sortie de fichier Java (jdk1.8 ou version ultérieure)
[Java] Créer un fichier temporaire
Comment déboguer à distance Java 9 ou version ultérieure
Exemple de contre-mesure NullPointerException (facultatif) pour Java8 ou version ultérieure
Consulter le mémo de la copie de fichier de Java 1.7 ou version ultérieure
création de fichier java
[Gradle] Générer Javadoc, y compris JavaScript dans Java 1.8.0_121 ou version ultérieure