Existe-t-il un moyen d'utiliser FileOutputStream de manière à ce que si un fichier (String filename) n'existe pas, il le créera?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
java
file
file-io
new-operator
fileoutputstream
Stefan Dunn
la source
la source
createNewFile()
méthode, comme indiqué dans mon exemple.createNewFile()
lui - même vérifie de manière atomique l'existence du fichier.createNewFile()
est une perte de temps totale ici. Le système le fera déjà. Vous le forcez juste à regarder deux fois.Avant de créer un fichier, il est nécessaire de créer tous les répertoires parents.
Utilisation
yourFile.getParentFile().mkdirs()
la source
Vous pouvez créer un fichier vide qu'il existe ou non ...
si vous souhaitez quitter le fichier s'il existe ...
Vous n'obtiendrez une FileNotFoundException que si vous essayez de créer le fichier dans un répertoire qui n'existe pas.
la source
FileNotFoundException
dans les deux cas.Transmettez ceci
f
à votreFileOutputStream
constructeur.la source
FileUtils d'apache commons est un très bon moyen d'y parvenir en une seule ligne.
Cela créera des dossiers parents s'ils n'existent pas et un fichier s'il n'existe pas et lèvera une exception si l'objet fichier est un répertoire ou ne peut pas être écrit. Cela équivaut à :
Toutes les opérations ci-dessus lèveront une exception si l'utilisateur actuel n'est pas autorisé à effectuer l'opération.
la source
Créez un fichier s'il n'existe pas. Si le fichier se ferme, effacez son contenu:
la source
Donner simplement un moyen alternatif de créer le fichier uniquement s'il n'existe pas en utilisant Path and Files.
la source
Vous pouvez potentiellement obtenir un
FileNotFoundException
si le fichier n'existe pas.La documentation Java dit:
Si vous utilisez Java 7, vous pouvez utiliser le package java.nio:
la source
new FileOutputStream(f)
créera un fichier dans la plupart des cas, mais malheureusement, vous obtiendrez une FileNotFoundExceptiondepuis Javadoc
En d'autres termes, il pourrait y avoir de nombreux cas où vous obtiendrez FileNotFoundException signifiant "Impossible de créer votre fichier", mais vous ne pourriez pas trouver la raison pour laquelle la création du fichier a échoué.
Une solution consiste à supprimer tout appel à l'API File et à utiliser l'API Files à la place, car elle offre une bien meilleure gestion des erreurs. En général, remplacez-les
new FileOutputStream(f)
parFiles.newOutputStream(p)
.Dans les cas où vous devez utiliser l'API File (parce que vous utilisez une interface externe utilisant File par exemple), l'utilisation
Files.createFile(p)
est un bon moyen de vous assurer que votre fichier est créé correctement et sinon, vous saurez pourquoi cela n'a pas fonctionné. Certaines personnes ont commenté ci-dessus que c'est redondant. C'est vrai, mais vous obtenez une meilleure gestion des erreurs qui peut être nécessaire dans certains cas.la source