2014-03-13 36 views
0

我從文本文件中刪除了一些行,但工作正常,但空白行有問題。 那些仍然在.txt文件中,我不知道如何刪除或放置這些我搜索谷歌和這裏的解決方案,但我失敗了。 有沒有人知道我如何刪除空行? 我試了一下:Java刪除txt文件中的空白行

currentLine.trim().length() == 0); but still with out success 

坦克

public static String COMMENT_LINE = "--.*"; 
    public static String CREATE_BUFFERPOOL = "CREATE BUFFERPOOL.*"; 
    public static String GRANT_USE = "GRANT USE.*"; 
    public static String CONNECT_TO = "CONNECT TO.*"; 
    public static Logger log = Logger.getLogger(Main.class); 



    //CHANGE PATH 
    public static String INPUT_FILE_PATH = "C://Users//dpa//Desktop//BW//bwcsvtest.txt"; 
    public static String OUTPUT_FILE_PATH "C://Users//dpa//Desktop//BW//BWFormated.txt"; 
    public static String TRANSFORM_FILE_PATH = "C://Users//dpa//Desktop//BW//BWtransformed.txt"; 
    public static String CSV_FILE_PATH = "C://Users//dpa//Desktop//BW//result.csv"; 

    public static void main(String[] args) throws IOException { 
     //log.debug("Formating File"); 
     formatTxt(INPUT_FILE_PATH,OUTPUT_FILE_PATH); 
     log.debug("Formating File complete"); 
     //CsvTransformer csvTransformer = new CsvTransformer(OUTPUT_FILE_PATH,TRANSFORM_FILE_PATH); 
     //csvTransformer.parseCSVInput(); 
     //csvTransformer.writeDataToCsv(CSV_FILE_PATH); 

    } 

    public static void formatTxt(String inputFilePath, String outputFilePath) throws IOException { 
     File inputFile = new File(inputFilePath); 
     BufferedReader reader = new BufferedReader(new FileReader(inputFile)); 

     File tempFile = new File(outputFilePath); 
     BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); 
     String currentLine; 
     while ((currentLine = reader.readLine()) != null) { 
      currentLine = currentLine.trim(); 
      if (currentLine.matches(COMMENT_LINE)) { 
       log.debug(currentLine); 
       log.debug("Commentline deleted"); 
       continue; 
      } 
      if (currentLine.matches(CREATE_BUFFERPOOL)) { 
       log.debug(currentLine); 
       log.debug("CREATE BUFFERPOOL deleted"); 
       continue; 
      } 
      if (currentLine.matches(GRANT_USE)) { 
       log.debug(currentLine); 
       log.debug("GRANT USE deleted"); 
       continue; 
      } 
      if (currentLine.matches(CONNECT_TO)) { 
       log.debug(currentLine); 
       log.debug("CONNECT TO deleted"); 
       continue;   
      } 

      writer.write(currentLine.replace("\t", "")); 
      writer.newLine(); 

     } 
     reader.close(); 
     writer.close(); 


    } 

} 
+0

首先,我會建議使用'如果/否則如果'在'formatTxt'方法中。由於它被編碼,它會每次都有效地重新測試相同的字符串,一旦它確定了它是哪一行,就不應該這樣做。其次,我沒有看到你想要刪除的線路。我希望你的'formatTxt'中有一個'if',用於測試這行是否爲空,而不是像其他塊一樣。 – CodeChimp

+0

@CodeChimp「因爲它是編碼的」 - >在每個「if」塊的末尾有一個「continue」,所以不會,它不會重新測試 – fge

+0

您的權利很早,而且我通常不會使用'繼續',所以它沒有註冊。不過,我仍然期望看到空字符串的測試。 – CodeChimp

回答

2

爲什麼不加,只是currentLine = currentLine.trim();後,此代碼:

if (currentLine.isEmpty()) 
    continue; 
0
currentLine = currentLine.trim(); 
if (!currentLine .equals("")) // don't write out blank lines 
    { 
     writer.write(currentLine , 0, currentLine .length()); 
    }