web-dev-qa-db-fra.com

écrire une nouvelle ligne dans un fichier

compte tenu de la fonction suivante

private static void GetText(String nodeValue) throws IOException {

   if(!file3.exists()) {
       file3.createNewFile();
   }

   FileOutputStream fop=new FileOutputStream(file3,true);
   if(nodeValue!=null)
       fop.write(nodeValue.getBytes());

   fop.flush();
   fop.close();

}

quoi ajouter pour le faire écrire chaque fois dans la ligne suivante?

par exemple, je veux chaque mot d'une chaîne donnée dans une ligne séparée, par exemple: 

i am mostafa

écrit comme:

 i
 am
 mostafa
11
lonesome

Pour écrire du texte (plutôt que des octets bruts) dans un fichier, utilisez plutôt FileWriter . Vous devriez également l'envelopper dans un BufferedWriter qui vous donnera ensuite la méthode newLine .

Pour écrire chaque mot sur une nouvelle ligne, utilisez String.split pour diviser votre texte en un tableau de mots.

Alors, voici un test simple de vos besoins:

public static void main(String[] args) throws Exception {
    String nodeValue = "i am mostafa";

    // you want to output to file
    // BufferedWriter writer = new BufferedWriter(new FileWriter(file3, true));
    // but let's print to console while debugging
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));

    String[] words = nodeValue.split(" ");
    for (String Word: words) {
        writer.write(Word);
        writer.newLine();
    }
    writer.close();
}

La sortie est:

i
am
mostafa
33
sudocode

Changer les lignes 

if(nodeValue!=null)
    fop.write(nodeValue.getBytes());

fop.flush();

à

if(nodeValue!=null) {
    fop.write(nodeValue.getBytes());
    fop.write(System.getProperty("line.separator").getBytes());
}

fop.flush();

Mise à jour pour adresser votre modification :

Afin d'écrire chaque mot sur une ligne différente, vous devez fractionner votre chaîne de saisie, puis écrire chaque mot séparément.

private static void GetText(String nodeValue) throws IOException {

    if(!file3.exists()) {
        file3.createNewFile();
    }

    FileOutputStream fop=new FileOutputStream(file3,true);
    if(nodeValue!=null)
        for(final String s : nodeValue.split(" ")){
            fop.write(s.getBytes());
            fop.write(System.getProperty("line.separator").getBytes());
        }
    }

    fop.flush();
    fop.close();

}
11
Jack Edmonds
if(!file3.exists()){
    file3.createNewFile();
}
FileOutputStream fop=new FileOutputStream(file3,true);
if(nodeValue!=null) fop.write(nodeValue.getBytes());

fop.write("\n".getBytes());

fop.flush();
fop.close();

Vous devez ajouter une nouvelle ligne à la fin de chaque écriture.

4
Files.write(Paths.get(filepath),texttobewrittentofile,StandardOpenOption.APPEND ,StandardOpenOption.CREATE);    

Cela crée un fichier, s'il n'existe pas Si des fichiers existent, il utilise le fichier existant et le texte est ajouté Si vous voulez que chaque ligne soit écrite sur la ligne suivante, ajoutez lineSepartor pour newline dans le fichier.

String texttobewrittentofile = text + System.lineSeparator();
3
Biku

les autres réponses devraient fonctionner. mais je veux mentionner

de Java doc:

FileWriter est destiné à l'écriture de flux de caractères. Pour écrire flux d'octets bruts, envisagez d'utiliser un FileOutputStream .

en lisant vos codes de méthode, vous êtes sur le point d'écrire String dans le fichier. Vous vouliez convertir String en octets bruts, puis écrivez, je pense donc que l'utilisation de FileWriter n'est pas une mauvaise idée.

Et pour le problème de nouvelle ligne, Writer utilise la méthode .write (String), qui est pratique à utiliser.

0
Kent

utilisez simplement\r\n pour vous connecter si vous utilisez le système d’exploitation Windows.

0
Hafiz Hamza

Solution:  

dans WINDOWS, vous devez écrire "\r\n" pour une nouvelle ligne.

0
Ilan Aizelman WS

Ou vous pouvez utiliser quelque chose comme ce qui suit. Faites attention à "\ n":

/**
 * Created by mona on 3/26/16.
 */
import Java.io.File;
import Java.io.FileNotFoundException;
import Java.io.FileReader;
import Java.io.FileWriter;
import Java.io.BufferedReader;
public class FileExample {


    public static void main (String[] args) throws Java.io.IOException {

        File newFile = new File("Tweet.txt");
        FileWriter fileWriter = new FileWriter(newFile);
        fileWriter.write("Mona Jalal");
        fileWriter.append("\nMona Mona");
        fileWriter.close();
        FileReader fileReader = new FileReader(newFile);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        fileReader.close();
        bufferedReader.close();



    }
}
0
Mona Jalal

Vous pouvez imprimer via PrintStream .

PrintStream ps = new PrintStream(fop);
ps.println(nodeValue);
ps.close();
0
Vlad