簡體   English   中英

是否可以通過Java中的BufferedWriter從文件中刪除最后一行?

[英]is it possible to remove a last line from a file via BufferedWriter in Java?

我有一個servlet類。 在該類中,我使用Java 6中的BufferedWriter#write(String)即時創建文本文件。 當我檢查文件時,在最后一行創建了一個空白行。 有什么辦法可以通過該類以編程方式將其刪除嗎? 還是應該使用其他API?

================
data 1 recorded
================
--> a blank line needs in between
================
data 2 recorded
================
--> a blank line needs to be removed at last line

// trimmed down version of doPost method from a servlet class
protected void doPost(.....) {
    ......  
    BufferedReader reader = new BuffereReader(new ...)
    BufferedWriter logger = new BufferedWriter(new...)
    while ((line = reader.readLine()) != null) {
       if (!line.equals("")) {
          try {
              doSomething(line,logger);                
              logger.write("=============\r\n"); // create a footer
              logger.write("\r\n");
          } catch (RuntimeException e) {
              logger.write(" warning! " + e.getMessage() + "\r\n");
              logger.write("=============\r\n"); // create a footer
              logger.write("\r\n");
          } 
      } // end of if stmt
   } // end of while loop
    ....
} // end of doPost method


// trimmed down version
private void doSomething(String line, BufferedWriter logger) {
   logger.write("=============\r\n"); // create a header  
   ....     
   if (...) {
       throw new RuntimeException("data is corrupted");
   } else {
     logger.write("data is good!\r\n");
   }
}

不,您不能使用該類將其刪除。 API沒有提供執行此操作的方法。 相反,您的代碼將必須知道它是否在處理最后一行,何時處理,請跳過將其傳遞到BufferedWriter

您可以遍歷生成的文件並將每行存儲為列表(如果不為空)

然后,您可以將新列表寫入文件。

發生這種情況的可能是因為您寫入文件的方式不同。 分享您的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM