записать новую строку в файл - PullRequest
13 голосов
/ 13 декабря 2011

с учетом следующей функции

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

Ответы [ 9 ]

37 голосов
/ 13 декабря 2011

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

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

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

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

Вывод:

i
am
mostafa
11 голосов
/ 13 декабря 2011

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

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

}
5 голосов
/ 17 марта 2018
Files.write(Paths.get(filepath),texttobewrittentofile,StandardOpenOption.APPEND ,StandardOpenOption.CREATE);    

Это создает файл, если он не существует Если файлы существуют, он использует существующий файл и текст добавляется Если вы хотите, чтобы каждая строка записывалась в следующую строку, добавьте lineSepartor для новой строки в файл.

String texttobewrittentofile = text + System.lineSeparator();
4 голосов
/ 13 декабря 2011
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();

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

1 голос
/ 16 июня 2017

Решение:

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

0 голосов
/ 06 мая 2017

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

0 голосов
/ 27 марта 2016

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

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

из документа Java:

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

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

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

0 голосов
/ 13 декабря 2011

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

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