如何在java中写入新的文本文件

如何在java中写入新的文本文件,java,Java,我正在尝试将我得到的每一行写入test.txt文件。然而,每一个结果都需要有自己的路线。我是否遗漏了什么,或者我没有正确地实现“\n”?为了更好地理解,我的代码读取一行中的第三个字母,如果该单词与P***ei“*”匹配,表示来自a-z(a-z)或S**ei的任何字母,则返回该行中的第一个单词作为结果。代码工作正常,但现在当我写入文件时,它不会在自己的行中打印每个单词 package test; import java.io.BufferedReader; import java.io.Fi

我正在尝试将我得到的每一行写入test.txt文件。然而,每一个结果都需要有自己的路线。我是否遗漏了什么,或者我没有正确地实现“\n”?为了更好地理解,我的代码读取一行中的第三个字母,如果该单词与P***ei“*”匹配,表示来自a-z(a-z)或S**ei的任何字母,则返回该行中的第一个单词作为结果。代码工作正常,但现在当我写入文件时,它不会在自己的行中打印每个单词

package test;

 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.util.regex.Pattern;

public class moja {



    public static void main(String[] args) {
        try {
            File file = new File("SloveneLexicon.txt");
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            StringBuffer stringBuffer = new StringBuffer();
            String vrstica;
            File test = new File("test.txt");
            FileWriter fw = new FileWriter(test);
            while ((vrstica = bufferedReader.readLine()) != null) {

                String s = vrstica;
                String[] dobi_besedo_v_vrstici = s.split("\\s+");
                String prva_beseda = dobi_besedo_v_vrstici[0];
                String tretja_beseda = dobi_besedo_v_vrstici[2];

                Pattern ena = Pattern.compile("S[a-zA-z]{2}ei");
                    if(ena.matcher(tretja_beseda).matches()){
                    fw.write(prva_beseda+'\n');}
                Pattern dva = Pattern.compile("P[a-zA-z]{3}ei");
                    if(dva.matcher(tretja_beseda).matches()){
                        fw.write(prva_beseda+'\n'); 
                    }
                }


            bufferedReader.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

获取系统行分隔符,而不是使用“\n”

            String newLine = System.getProperty("line.separator");

            Pattern ena = Pattern.compile("S[a-zA-z]{2}ei");
                if(ena.matcher(tretja_beseda).matches()){
                fw.write(prva_beseda + newLine);}
            Pattern dva = Pattern.compile("P[a-zA-z]{3}ei");
                if(dva.matcher(tretja_beseda).matches()){
                    fw.write(prva_beseda + newLine); 
                }
在程序末尾添加fw.flush()


查看从OutputStreamWriter继承的flush方法。

是否有特定原因导致您没有尝试使用
println()
?如果您在windows上将'\n'替换为'\r\n'。或者只使用好的文本编辑器(不是记事本:)@shyam,因为它不声明
println()
…最好使用不限于
\r\n
换行符的文本编辑器。