将换行符写入文件
考虑以下function
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
要将文本(而不是原始字节)写入文件,您应该考虑使用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
改变线条
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(); }
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();
您需要在每次写入结束时添加换行符。
您可以通过PrintStream进行打印。
PrintStream ps = new PrintStream(fop); ps.println(nodeValue); ps.close();
其他答案应该有效。 不过我想提一下
来自java doc:
FileWriter用于编写字符流。 要编写原始字节流,请考虑使用FileOutputStream 。
读取你的方法代码,你要将String写入文件,你正在做的是将String转换为原始字节,然后写,所以我认为使用FileWriter并不是一个坏主意。
对于换行问题,Writer有方法.write(String),方便使用。
或者您可以使用以下内容。 注意“\ 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(); } }
如果您使用的是Windows操作系统,只需使用\ r \ n作为endline。
解:
在WINDOWS中,您应该为新行写"\r\n"
。
Files.write(Paths.get(filepath),texttobewrittentofile,StandardOpenOption.APPEND ,StandardOpenOption.CREATE);
这将创建一个文件,如果它不存在如果文件存在,则使用现有文件并附加文本如果要将每行写入下一行,请将换行的lineSepartor添加到文件中。
String texttobewrittentofile = text + System.lineSeparator();