考虑以下功能
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();
}
要添加什么以使其每次都写入下一行?
例如,我想要一个单独的lline中给定字符串的每个单词,例如:
i am mostafa
写道:
i
am
mostafa
答案 0 :(得分:36)
要将文本(而不是原始字节)写入文件,您应该考虑使用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'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
答案 1 :(得分:11)
更改行
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();
}
答案 2 :(得分:4)
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();
您需要在每次写入结束时添加换行符。
答案 3 :(得分:4)
Files.write(Paths.get(filepath),texttobewrittentofile,StandardOpenOption.APPEND ,StandardOpenOption.CREATE);
如果文件不存在,则创建一个文件 如果文件存在,则使用现有文件并附加文本 如果您希望将每行写入下一行,请将换行的lineSepartor添加到文件中。
String texttobewrittentofile = text + System.lineSeparator();
答案 4 :(得分:0)
您可以通过PrintStream进行打印。
PrintStream ps = new PrintStream(fop);
ps.println(nodeValue);
ps.close();
答案 5 :(得分:0)
其他答案应该有效。但我想提一下
来自java doc:
FileWriter 用于编写字符流。写作 原始字节流,请考虑使用 FileOutputStream 。
读取你的方法代码,你即将把String写入文件,你正在做的是将String转换为原始字节,然后写,所以我认为使用FileWriter并不是一个坏主意。
对于换行问题,Writer有方法.write(String),方便使用。
答案 6 :(得分:0)
或者您可以使用以下内容。注意" \ 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 :(得分:0)
如果您使用的是Windows操作系统,只需使用\ r \ n作为endline。
答案 8 :(得分:0)
解决方案:
在WINDOWS中,您应该为新行编写"\r\n"
。