Java java.nio.file.Files.newOutputStream()Méthode
Files.newOutputStream()Cette méthode est utilisée pour ouvrir un fichier et renvoie un flux de sortie pour écrire des données d'octets dans le fichier. Si le fichier n'existe pas, un nouveau fichier peut être créé ; si le fichier existe déjà, vous pouvez spécifier s'il faut l'écraser ou y ajouter du contenu.
Définition de méthode
throws IOException
Description du paramètre
Path path
- Le chemin du fichier à ouvrir ou à créer
- Utiliser
Paths.get()méthode pour créer un objet Path - Exemple :
Path path = Paths.get("example.txt");
OpenOption... options(Facultatif)
- Options spécifiant la façon dont le fichier est ouvert
- Les options courantes proviennent de
StandardOpenOptionl'énumération :CREATE- Créer un nouveau fichier s'il n'existe pasCREATE_NEW- Créer un nouveau fichier, lever une exception si le fichier existe déjàWRITE- Ouvrir le fichier en écritureAPPEND- Ouvrir le fichier en mode ajout (écrire à la fin du fichier)TRUNCATE_EXISTING- Si le fichier existe, tronquer le contenu du fichier
Valeur de retour
Renvoie unOutputStreamobjet, qui peut être utilisé pour écrire des données d'octets dans le fichier.
Exemples d'utilisation
Exemple 1 : Utilisation de base - Créer un nouveau fichier et écrire du contenu
Exemple
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class FileWriteExample {
public static void main(String[] args) {
Path path = Paths.get("example.txt");
try (OutputStream outputStream = Files.newOutputStream(,
StandardOpenOption.CREATE,
StandardOpenOption.WRITE)) {
String content = "Hello, Java NIO!";
outputStream.write(content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Exemple 2 : Ajouter du contenu à un fichier existant
Exemple
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class FileAppendExample {
public static void main(String[] args) {
Path path = Paths.get("example.txt");
try (OutputStream outputStream = Files.newOutputStream(,
StandardOpenOption.CREATE,
StandardOpenOption.APPEND)) {
String additionalContent = "\nAdding more content!";
outputStream.write(additionalContent.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Gestion des exceptions
Files.newOutputStream()La méthode peut lever les exceptions suivantes :
IOException- Lancée si une erreur d'E/S se produit
- Par exemple : pas de permission d'écriture, espace disque insuffisant, etc.
UnsupportedOperationException- Levée si des options non prises en charge sont spécifiées
SecurityException- Levée lorsqu'un gestionnaire de sécurité existe et refuse l'accès au fichier
Bonnes pratiques
Utiliser try-with-resources
- Comme montré dans les exemples, utilisez l'instruction try-with-resources pour garantir que le flux est correctement fermé
- Cela évite les fuites de ressources
Spécifiez explicitement OpenOption
- Même si aucune option n'est spécifiée, la méthode a un comportement par défaut
- Mais le fait de spécifier explicitement peut rendre l'intention du code plus claire
Gérez la sécurité des chemins
- Vérifiez que le chemin se trouve dans le périmètre du répertoire autorisé
- Empêchez les attaques par traversée de chemin
Envisagez le verrouillage de fichier
- Si vous avez besoin d'un accès exclusif au fichier, envisagez d'utiliser un mécanisme de verrouillage de fichier
etFileOutputStreamComparaison
Files.newOutputStream()Avantages- API plus moderne, meilleure intégration avec NIO
- Prend en charge davantage d'options d'ouverture
- Peut gérer les liens symboliques
FileOutputStreamScénarios applicables- Lorsqu'une compatibilité avec du code hérité est nécessaire
- Lorsque seule la fonctionnalité d'écriture de fichiers la plus élémentaire est nécessaire
Résumé
Files.newOutputStream()C'est une méthode pratique dans Java NIO pour l'écriture de fichiers, offrant des options flexibles pour contrôler la manière dont les fichiers sont ouverts. Par rapport à la méthode traditionnelleFileOutputStream, elle s'intègre mieux avec les autres composants NIO et prend en charge des fonctionnalités plus avancées. Lors de l'écriture de nouvelles applications Java, cette méthode est recommandée pour les opérations d'écriture de fichiers.
En utilisant correctement le paramètre OpenOption, vous pouvez contrôler précisément le comportement de création, d'écrasement ou d'ajout des fichiers afin de répondre à différents besoins métier.
Autres extensions
Java java.nio.file.Files