Написать новую строку в файл
учитывая следующую функцию
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"
для новой строки.