2017-09-26 8 views
-1

J'ai écrit une méthode qui remplace certaines lignes dans un fichier (ce n'est pas le but de cette question). Tout fonctionne bien, mais je me demande si le fichier est fermé pour la lecture quand je commence à écrire. Je voudrais m'assurer que ma solution est sûre. Voilà ce que je l'ai fait:Fermer le fichier à lire avant de commencer à écrire

private void replaceCodeInTranslationFile(File file, String code) { 
    if (file.exists()) { 
    try (Stream<String> lines = Files.lines(Paths.get(file.getAbsolutePath()), Charset.defaultCharset())) { 
     String output = this.getLinesWithUpdatedCode(lines, code); 
     this.replaceFileWithContent(file, output); // is it safe? 
    } catch (IOException e) { 
     throw new UncheckedIOException(e); 
    } 
    } 
} 

Méthode replaceFileWithContent() ressemble à ceci:

private void replaceFileWithContent(File file, String content) throws IOException { 
    try (FileOutputStream fileOut = new FileOutputStream(file.getAbsolutePath())) { 
    fileOut.write(content.getBytes(Charset.defaultCharset())); 
    } 
} 

Je pense que try-with-resources ferme ressources à la fin d'une instruction, de sorte que ce code peut être potentiellement la source de problèmes . Ai-je raison?

+0

Oui, il le fait. C'est la seule chose qu'elle fait. Question étrange. – EJP

Répondre