2016-04-28 2 views
0

Я хотел бы отредактировать существующий файл через Java, чтобы иметь разрыв строки и за ним следует пробел после каждого 4-го символа строки. Таким образом, это ожидание.Java для редактирования существующего файла

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

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

Ниже приведен пример кода, но это записывает все в одной строке.

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 в соответствии с вопросом 'но это записывает все в одной строке' –

+0

Что делать, если вы используете' '$ 1" + System.getProperty ("line.separator"); 'вместо' "$ 1 \ n"? – npinti

ответ

1

Ваш код не записывает разделитель строк после каждой строки. Вам нужно добавить его конкретно

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

или 'bw.newLine();' –

+0

Согласовано. Спасибо, это будет независимым от системы. – Sanjeev

Смежные вопросы