En Java, j'ai du texte d'un champ de texte dans une variable de chaîne appelée "texte".
Comment puis-je enregistrer le contenu de la variable "texte" dans un fichier?
la source
En Java, j'ai du texte d'un champ de texte dans une variable de chaîne appelée "texte".
Comment puis-je enregistrer le contenu de la variable "texte" dans un fichier?
Si vous sortez simplement du texte, plutôt que des données binaires, ce qui suit fonctionnera:
PrintWriter out = new PrintWriter("filename.txt");
Ensuite, écrivez-y votre chaîne, comme vous le feriez pour n'importe quel flux de sortie:
out.println(text);
Vous aurez toujours besoin d'une gestion des exceptions. N'oubliez pas d'appeler out.close()
lorsque vous avez terminé d'écrire.
Si vous utilisez Java 7 ou une version ultérieure, vous pouvez utiliser "l' instruction try-with-resources " qui fermera automatiquement votre PrintStream
lorsque vous en aurez terminé (c'est-à-dire quitter le bloc) comme ceci:
try (PrintWriter out = new PrintWriter("filename.txt")) {
out.println(text);
}
Vous devrez toujours lancer explicitement le java.io.FileNotFoundException
comme précédemment.
Apache Commons IO contient d'excellentes méthodes pour ce faire, en particulier FileUtils contient la méthode suivante:
qui vous permet d'écrire du texte dans un fichier en un seul appel de méthode:
Vous pouvez également envisager de spécifier l'encodage du fichier également.
la source
FileUtils.writeStringToFile(new File("test.txt"), "Hello File", forName("UTF-8"));
Jetez un œil à l' API Java File
un exemple rapide:
la source
@Cleanup new FileOutputStream(...)
et vous avez terminé.Dans Java 7, vous pouvez le faire:
Il y a plus d'informations ici: http://www.drdobbs.com/jvm/java-se-7-new-file-io/231600403
la source
content.getBytes(StandardCharsets.UTF_8)
peut être utilisé pour définir explicitement l'encodage.Je viens de faire quelque chose de similaire dans mon projet. Utiliser FileWriter simplifiera une partie de votre travail. Et ici, vous pouvez trouver un joli tutoriel .
la source
.close()
cela ne lance pas (au moins en Java 7?), Le dernier trycatch est-il peut-être redondant?throw new RuntimeException(e);
Utilisation
FileUtils.writeStringToFile()
depuis Apache Commons IO . Pas besoin de réinventer cette roue particulière.la source
Vous pouvez utiliser la modification du code ci-dessous pour écrire votre fichier à partir de la classe ou de la fonction qui gère le texte. On se demande pourtant pourquoi le monde a besoin d'un nouvel éditeur de texte ...
la source
Dans Java 11, la
java.nio.file.Files
classe a été étendue par deux nouvelles méthodes utilitaires pour écrire une chaîne dans un fichier. La première méthode (voir JavaDoc ici ) utilise le jeu de caractères UTF-8 par défaut:Et la deuxième méthode (voir JavaDoc ici ) permet de spécifier un jeu de caractères individuel:
Les deux méthodes ont un paramètre Varargs facultatif pour définir les options de gestion des fichiers (voir JavaDoc ici ). L'exemple suivant créerait un fichier inexistant ou ajouterait la chaîne à un fichier existant:
la source
Je préfère me fier autant que possible aux bibliothèques pour ce type d'opération. Cela me rend moins susceptible d'omettre accidentellement une étape importante (comme l'erreur Wolfsnipes faite ci-dessus). Certaines bibliothèques sont suggérées ci-dessus, mais mon préféré pour ce genre de chose est Google Guava . Guava a une classe appelée Files qui fonctionne bien pour cette tâche:
la source
Charsets.UTF-8
.Charsets.UTF_8
faitFiles.asCharSink(file, charset).write(text)
Utilisez l'API Apache Commons IO. C'est simple
Utiliser l'API en tant que
Dépendance Maven
la source
Si vous avez besoin de créer un fichier texte basé sur une seule chaîne:
la source
Utilisez-le, il est très lisible:
la source
Vous pouvez insérer cette méthode dans vos classes. Si vous utilisez cette méthode dans une classe avec une méthode principale, changez cette classe en statique en ajoutant le mot clé statique. Dans tous les cas, vous devrez importer java.io. * pour le faire fonctionner, sinon File, FileWriter et BufferedWriter ne seront pas reconnus.
la source
Vous pouvez faire ceci:
la source
En utilisant
Java 7
:la source
Files.write(targetPath, bytes);
de remplacer le fichier. Cela fonctionnera comme prévu.Utilisation de org.apache.commons.io.FileUtils:
la source
Si vous ne voulez que pousser un bloc de texte dans un fichier, cela le remplacera à chaque fois.
Cet exemple permet à l'utilisateur de sélectionner un fichier à l'aide d'un sélecteur de fichiers.
la source
Il est préférable de fermer le scripteur / flux de sortie dans un bloc enfin, au cas où quelque chose se produirait
la source
}
la source
Je pense que la meilleure façon est d'utiliser
Files.write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)
:Voir javadoc :
Notez s'il vous plaît. Je vois que les gens ont déjà répondu avec Java intégré
Files.write
, mais ce qui est spécial dans ma réponse, que personne ne semble mentionner, c'est la version surchargée de la méthode qui prend un Iterable de CharSequence (c'est-à-dire une chaîne), au lieu d'unbyte[]
tableau,text.getBytes()
n'est donc pas nécessaire , ce qui est un peu plus propre je pense.la source
Si vous souhaitez conserver les caractères de retour chariot de la chaîne dans un fichier, voici un exemple de code:
la source
Ma voie est basée sur le flux en raison de l'exécution sur toutes les versions d'Android et des besoins en ressources de collecte telles que l'URL / l'URI, toute suggestion est la bienvenue.
En ce qui concerne, les flux (InputStream et OutputStream) transfèrent des données binaires, lorsque le développeur va écrire une chaîne dans un flux, doit d'abord la convertir en octets, ou en d'autres termes l'encoder.
la source
Vous pouvez utiliser ArrayList pour mettre tout le contenu de TextArea par exemple, et envoyer comme paramètre en appelant la sauvegarde, comme le rédacteur vient d'écrire des lignes de chaîne, puis nous utilisons ligne par ligne "pour" pour écrire notre ArrayList à la fin nous serons content TextArea dans le fichier txt. si quelque chose n'a pas de sens, je suis désolé est le traducteur google et moi qui ne parle pas anglais.
Regardez le Bloc-notes Windows, il ne saute pas toujours les lignes et affiche le tout sur une seule ligne, utilisez Wordpad ok.
la source