将换行符写入文件

2022-09-03 03:14:12

考虑以下功能

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

答案 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'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

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

}