Написать новую строку в файл

учитывая следующую функцию

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();

}

что добавить, чтобы заставить его писать каждый раз в следующей строке?

Например, я хочу, чтобы каждое слово данной строки находилось в отдельной строке:

i am mostafa

записывается как:

 i
 am
 mostafa

Ответ 1

Чтобы записать текст (а не сырые байты) в файл, вы должны использовать FileWriter. Вы также должны обернуть его в BufferedWriter, который затем даст вам newLine.

Чтобы записать каждое слово в новой строке, используйте String.split, чтобы разбить текст на массив слов.

Итак, вот простой тест вашего требования:

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 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();
}

Вывод:

i
am
mostafa

Ответ 2

Измените строки

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();

Обновить адрес для вашего редактирования:

Чтобы записать каждое слово на другой строке, вам нужно разделить строку ввода и затем записать каждое слово отдельно.

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();

}

Ответ 3

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();

Вам нужно добавить новую строку в конце каждой записи.

Ответ 4

Вы можете распечатать PrintStream.

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

Ответ 5

другие ответы должны работать. однако я хочу упомянуть

из java doc:

FileWriter предназначен для записи потоков символов. Для записи потоки необработанных байтов, рассмотрите возможность использования FileOutputStream.

Прочитав коды методов, вы собираетесь написать String в файл, то, что вы делаете, это преобразовать String в необработанные байты, а затем написать, поэтому я думаю, что использование FileWriter - неплохая идея.

И для проблемы новой строки Writer имеет метод .write(String), который удобно использовать.

Ответ 6

Или вы можете использовать что-то вроде следующего. Обратите внимание на "\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();



    }
}

Ответ 7

просто используйте \r\n для endline, если вы используете операционную систему Windows.

Ответ 8

Решение:

в WINDOWS вы должны написать "\r\n" для новой строки.