2016-04-28 17 views
0

私はJavaを使用して既存のファイルを編集して改行し、行の各4番目の文字の後にスペースを挿入したいと思います。Javaは既存のファイルを編集します

File Content 
------------ 
abcdef 
gh 
ijklmn 

Expected output 
-------------- 
abcd 
ef 
gh 
ijkl 
mn 

以下は試行されたコードですが、これはすべて1行に書き込まれます。

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 

public class ReplaceFileContents { 
    public static void main(String[] args) { 
    new ReplaceFileContents().replace(); 
    } 

    public void replace() { 
     String oldFileName = "Changed1.ldif"; 
     String tmpFileName = "Changed2.ldif"; 

     BufferedReader br = null; 
     BufferedWriter bw = null; 
     try { 
     br = new BufferedReader(new FileReader(oldFileName)); 
     bw = new BufferedWriter(new FileWriter(tmpFileName)); 
     String line; 


     while ((line = br.readLine()) != null) {  
       line=line.replaceAll("(.{4})", "$1\n ");  
       bw.write(line); 
     } 
     } catch (Exception e) { 
     return; 
     } finally { 
     try { 
      if(br != null) 
       br.close(); 
     } catch (IOException e) { 
      // 
     } 
     try { 
      if(bw != null) 
       bw.close(); 
     } catch (IOException e) { 
      // 
     } 
     } 
     // Once everything is complete, delete old file.. 
     File oldFile = new File(oldFileName); 
     oldFile.delete(); 

     // And rename tmp file's name to old file name 
     File newFile = new File(tmpFileName); 
     newFile.renameTo(oldFile); 

    } 
+0

このコードでは何が問題ですか? – Sanjeev

+0

@Sanjeevさんの質問は 'しかし、これはすべて1行に書いてください ' –

+0

' '$ 1 \ n' 'の代わりに' '$ 1" + System.getProperty( "line.separator"); – npinti

答えて

1

あなたのコードは、各行の後に行区切り記号を書いていません。あなたはそれを具体的に追加する必要があります

 while ((line = br.readLine()) != null) {  
      line=line.replaceAll("(.{4})", "$1\n ");  
      bw.write(line); 
      bw.newLine(); 
    } 
+2

または 'bw.newLine(); ' –

+0

合意。ありがとう、それはシステムに依存しません。 – Sanjeev

関連する問題