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
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
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();
}
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.
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();
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.
utilisez simplement\r\n pour vous connecter si vous utilisez le système d’exploitation Windows.
Solution:
dans WINDOWS, vous devez écrire "\r\n"
pour une nouvelle ligne.
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();
}
}
Vous pouvez imprimer via PrintStream .
PrintStream ps = new PrintStream(fop);
ps.println(nodeValue);
ps.close();