2014-10-22 62 views
0

我想寫我到test.txt文件的每一行。然而,每個結果都需要按照自己的路線。我錯過了什麼,或者我沒有正確實施「\ n」?爲了更好地理解,我的代碼在一行中讀取第3個工作,並且如果該單詞與P *** ei「*」匹配表示來自a-z(A-Z)或S ** ei的任何字母並因此返回該行中的第一個單詞。代碼工作,但現在當我寫入文件它不會打印每一個字在自己的行。如何寫入新的文本文件在java

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(); 
     } 
    } 
} 
+0

是否有一個特定的原因,你爲什麼不嘗試使用'println()'? – shyam 2014-10-22 09:19:12

+0

如果你在windows上用'\ r \ n'替換'\ n'。或者只是使用好的文本編輯器(不是記事本:)) – talex 2014-10-22 09:19:58

+1

@shyam因爲[FileWriter](http://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html)沒有聲明' println()'... – stevecross 2014-10-22 09:25:02

回答

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

更好地使用不限於'\ r \ n'換行符的文本編輯器。 – stevecross 2014-10-22 09:22:57

+0

謝謝你的工作 – 2014-10-22 09:27:48

0

添加fw.flush()在程序結束時系統行分隔符。

查看從OutputStreamWriter繼承的刷新方法here