Je tente d'écrire un fichier à l'aide de java.io, où j'essaie de le créer à l'emplacement existe-t-il une méthode qui créera des répertoires requis sur la voie à la rédaction d'un fichier? Je cherche quelque chose dans le SDK Java, ou em> dans une bibliothèque légère, je peux ajouter à la classe de classe, par ex. Apache Commons Io. P>
P.s. Pour la clarté, j'ai déjà codé une solution, qui fonctionne pour la manière relativement étroite que je le teste, je n'ai donc pas besoin de suggestions sur la façon d'écrire la méthode que je recherche. Je recherche une méthode qui aura été assez bien testée et une plate-forme multiplate-forme. P> "certains / chemin / à / à / quelque part / puis-mon-fichier" code>. Lorsque le fichier est en cours de création, l'un des répertoires sur le chemin peut exister ou non. Plutôt que de jeter une impression IoException car il n'y a pas de tels répertoires, j'aimerais que les répertoires soient créés de manière transparente, autant que nécessaire. P>
3 Réponses :
nouveau fichier ("Certains / chemin / à / à / à / sur ou ensuite / mon fichier"). GetParentFile (). MKDirs () Code> P>
Notez que mkdirs () ne jette pas une impression IoException si elle ne peut pas créer les répertoires, il retourne simplement faux. C'est une bonne idée de vérifier que le répertoire existe déjà ou a été créé avec succès. If (! Répertoire.exists () &&! Répertoire.mkdirs ()) lancer une nouvelle ioException ("Impossible de créer un répertoire" + dir);
Yup, point juste. Vous pouvez entrer dans une logique assez désagréable, telle que le parent existant, mais ne pas être un répertoire, ni exister et ne pas être écrit, etc.
Oh wow, j'ai écrit environ 10 lignes de code pour essayer d'obtenir le répertoire parent, indépendamment du système, mais system.lineseparator code> a donné quelque chose qui apparemment ne fonctionnait pas bien avec
de remplacement Code> à cause de la chaîne vs regex, etc., j'ai même utilisé une horrible regex comme ceci:
séparateur = fichier.separator.replaceall ("" "", "\\\\\ '"). Remplacement ("\" \\\ "," \\\\\\\\\\ "). r eplaceAll (" \\\ "" "," \\ \\\ ""); code> et il n'a toujours pas Travailler bien. Mais apparemment, il y a une intégrée, j'aurais dû voir cela à venir.
Puisque la question a également mentionné la bibliothèque Cette solution utilise la classe fileautils code> < / a>, de package
org.apache.commons.io code> et la méthode
forcemkdir code>
, que" fait un répertoire, y compris tout nécessaire mais Annuaires parents inexistants EM> ". P> P>
TS veut faire un fichier régulier i>. Ensuite, ce serait comme fileutils.forcemkdir (régulierfile.geparentfile ()) code> ou
fileUtils.forcemkdirent (régulier) code> depuis la version 2.5
Bonne prise! N'hésitez pas à éditer la réponse pour l'améliorer. Les commentaires sont souvent non-lus