Question Comment enregistrer une chaîne dans un fichier texte en utilisant Java?


En Java, j'ai du texte d'un champ de texte dans une variable String appelée "texte".

Comment puis-je sauvegarder le contenu de la variable "texte" dans un fichier?


561
2018-06-27 19:37


origine


Réponses:


Si vous envoyez simplement du texte, plutôt que des données binaires, ce qui suit fonctionnera:

PrintWriter out = new PrintWriter("filename.txt");

Ensuite, écrivez votre chaîne, comme vous le feriez pour n'importe quel flux de sortie:

out.println(text);

Vous aurez besoin d'une gestion des exceptions, comme toujours. Assurez-vous d'appeler out.close() quand vous avez fini d'écrire.

Si vous utilisez Java 7 ou version ultérieure, vous pouvez utiliser leinstruction try-with-resources"qui fermera automatiquement votre PrintStream quand vous en avez fini (c'est-à-dire quitter le bloc) comme ceci:

try (PrintWriter out = new PrintWriter("filename.txt")) {
    out.println(text);
}

Vous aurez toujours besoin de lancer explicitement le java.io.FileNotFoundException comme avant.


597
2018-06-27 19:43



Apache Commons IO contient de bonnes méthodes pour ce faire, en particulier FileUtils contient la méthode suivante:

static void writeStringToFile(File file, String data) 

ce qui vous permet d'écrire du texte dans un fichier dans un appel de méthode:

FileUtils.writeStringToFile(new File("test.txt"), "Hello File");

Vous pouvez également envisager de spécifier l'encodage du fichier.


219
2018-06-27 19:46



Jetez un oeil à la API de fichier Java

un exemple rapide:

try (PrintStream out = new PrintStream(new FileOutputStream("filename.txt"))) {
    out.print(text);
}

75
2018-06-27 19:40



Juste fait quelque chose de similaire dans mon projet. Utilisation FileWriter simplifiera une partie de votre travail. Et ici vous pouvez trouver agréable Didacticiel.

BufferedWriter writer = null;
try
{
    writer = new BufferedWriter( new FileWriter( yourfilename));
    writer.write( yourstring);

}
catch ( IOException e)
{
}
finally
{
    try
    {
        if ( writer != null)
        writer.close( );
    }
    catch ( IOException e)
    {
    }
}

74
2018-06-27 19:42



En Java 7, vous pouvez faire ceci:

String content = "Hello File!";
String path = "C:/a.txt";
Files.write( Paths.get(path), content.getBytes(), StandardOpenOption.CREATE);

Il y a plus d'informations ici: http://www.drdobbs.com/jvm/java-se-7-new-file-io/231600403


58
2018-03-17 01:44



Utilisation FileUtils.writeStringToFile() de Apache Commons IO. Pas besoin de réinventer cette roue particulière.


52
2018-06-27 19:40



Vous pouvez utiliser le code ci-dessous pour écrire votre fichier à partir de n'importe quelle classe ou fonction manipulant le texte. On se demande cependant pourquoi le monde a besoin d'un nouvel éditeur de texte ...

import java.io.*;

public class Main {

    public static void main(String[] args) {

        try {
            String str = "SomeMoreTextIsHere";
            File newTextFile = new File("C:/thetextfile.txt");

            FileWriter fw = new FileWriter(newTextFile);
            fw.write(str);
            fw.close();

        } catch (IOException iox) {
            //do stuff with exception
            iox.printStackTrace();
        }
    }
}

21
2018-06-27 19:52



Utilisez Apache Commons IO api. C'est simple

Utiliser l'API en tant que

 FileUtils.writeStringToFile(new File("FileNameToWrite.txt"), "stringToWrite");

Maven Dépendance

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

11
2018-03-01 11:54



Je préfère compter sur les bibliothèques chaque fois que possible pour ce genre d'opération. Cela me rend moins susceptible d'omettre accidentellement une étape importante (comme les erreurs wolfsnipes faites ci-dessus). Certaines bibliothèques sont suggérées ci-dessus, mais mon préféré pour ce genre de chose est Google Goyave. La goyave a une classe appelée Des dossiers qui fonctionne bien pour cette tâche:

// This is where the file goes.
File destination = new File("file.txt");
// This line isn't needed, but is really useful 
// if you're a beginner and don't know where your file is going to end up.
System.out.println(destination.getAbsolutePath());
try {
    Files.write(text, destination, Charset.forName("UTF-8"));
} catch (IOException e) {
    // Useful error handling here
}

11
2018-06-28 23:27



Dans le cas où vous avez besoin de créer un fichier texte basé sur une seule chaîne:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class StringWriteSample {
    public static void main(String[] args) {
        String text = "This is text to be saved in file";

        try {
            Files.write(Paths.get("my-file.txt"), text.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

11
2018-06-30 08:28



import java.io.*;

private void stringToFile( String text, String fileName )
 {
 try
 {
    File file = new File( fileName );

    // if file doesnt exists, then create it 
    if ( ! file.exists( ) )
    {
        file.createNewFile( );
    }

    FileWriter fw = new FileWriter( file.getAbsoluteFile( ) );
    BufferedWriter bw = new BufferedWriter( fw );
    bw.write( text );
    bw.close( );
    //System.out.println("Done writing to " + fileName); //For testing 
 }
 catch( IOException e )
 {
 System.out.println("Error: " + e);
 e.printStackTrace( );
 }
} //End method stringToFile

Vous pouvez insérer cette méthode dans vos classes. Si vous utilisez cette méthode dans une classe avec une méthode principale, remplacez cette classe par 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.


10
2017-11-05 19:51