2016-11-19 63 views
0

pdfファイルをテキストに変換してページ番号のある行を削除していますが、問題は2行分の空白を残してしまうことです。 2行以上の空行が連続していますが、1行が空でない場合はありません。コードはJavaのファイル内の空白行を削除する方法

// Open the file 
     FileInputStream fstream = new FileInputStream("C:\\Users\\Vivek\\Desktop\\novels\\Me1.txt"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 

     String strLine; 
String s=null; 
     //Read File Line By Line 
     while ((strLine = br.readLine()) != null) { 

      String pattern = "^[0-9]+[\\s]*$"; 
      strLine=strLine.replaceAll(pattern, " "); 
     writeResult("C:\\Users\\Vivek\\Desktop\\novels\\doci.txt",strLine); 

     } 


     //Close the input stream 
     br.close(); 

    } 

    public static void writeResult(String writeFileName, String text) 
    { 
      File log = new File(writeFileName); 
      try{ 
      if(log.exists()==false){ 
        System.out.println("We had to make a new file."); 
        log.createNewFile(); 
      } 
      PrintWriter out = new PrintWriter(new FileWriter(log, true)); 
      out.append(text); 
      out.println(); 
      out.close(); 
      }catch(IOException e){ 
       System.out.println("COULD NOT LOG!!"); 
      } 
    } 

plzです。

+0

が、この場合においても、私はもし 'に新しい空行のチェックについて –

+0

方法をたくないどの削除されますカウントを増やしてください。カウントが> = 1の場合は、新しい行を1つだけ書き出します。 – SkrewEverything

+0

FYI ...出力の各行のファイルの開閉は非常に非効率的です。 –

答えて

1

SkrewEverythingのようなあなたのメソッドで、連続した空行カウンターで作業できます。

またはこのような正規表現で後処理を行います。ファイルは1つの空の行を持っている場合

package testingThings; 

import java.awt.Desktop; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.UnsupportedEncodingException; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 

public class EmptyLinesReducer { 
    public Path reduceEmptyLines(Path in) throws UnsupportedEncodingException, IOException { 
     Path path = Paths.get("text_with_reduced_empty_lines.txt"); 

     String originalContent = new String(Files.readAllBytes(in), "UTF-8"); 
     String reducedContent = originalContent.replaceAll("(\r\n){2,}", "\n\n"); 
     Files.write(path, reducedContent.getBytes()); 

     return path; 
    } 


    public Path createFileWithEmptyLines() throws IOException { 
     Path path = Paths.get("text_with_multiple_empty_lines.txt"); 
     PrintWriter out = new PrintWriter(new FileWriter(path.toFile())); 

     out.println("line1"); 

     //empty lines 
     out.println(); 
     out.println(); 
     out.println(); 
     out.println("line2"); 

     //empty lines 
     out.println(); 

     out.println("line3"); 

     //empty lines 
     out.println(); 
     out.println(); 
     out.println(); 
     out.println(); 
     out.println(); 
     out.println("line4"); 

     out.close(); 

     return path; 
    } 

    public static void main(String[] args) throws UnsupportedEncodingException, IOException { 
     EmptyLinesReducer app = new EmptyLinesReducer(); 

     Path in = app.createFileWithEmptyLines(); 
     Path out = app.reduceEmptyLines(in); 

     // open the default program for this file 
     Desktop.getDesktop().open(out.toFile()); 

    } 

} 
関連する問題