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

时间:2014-10-22 09:15:19

标签: java

我正在尝试编写每个到test.txt文件的行。但是,每个结果都必须符合自己的要求。我错过了什么或者我没有核心实施“\ n”?为了更好地理解,我的代码在一行中读取第3个作品,如果该单词匹配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();
        }
    }
}

2 个答案:

答案 0 :(得分:2)

获取系统行分隔符,而不是使用' \ 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); 
                }

答案 1 :(得分:0)

在程序结束时添加fw.flush()。

查看从OutputStreamWriter here继承的flush方法。

相关问题