将换行符写入文件

时间:2011-12-13 15:24:09

标签: java file newline

考虑以下功能

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

9 个答案:

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