2014-03-07 48 views
-1

我一直在網上搜索,但無濟於事。獨立的空行。txt文件,並複製到另一個.txt文件

我的問題是,我有一個包含像

2014-03-04 08:28:45 1WKkiT-0008Qr-M9 Message received from xx (1.2.3.41) T="q" 
2014-03-04 08:28:45 1WKkiT-0008Qr-M9 Message was delivered to xxxH=xxx[11.11.11.1] C="250 Queued (0.000 seconds)" 
2014-03-04 08:28:45 1WKkiT-0008Qr-M9 Completed 

2014-03-04 08:28:45 1WKkiT-0008Qr-M9 DKIM: d=x=relaxed/relaxed a=rsa-sha1 t=1393921721 [verification succeeded] 
2014-03-04 08:29:12 1WKkit-0005cD-UZ Message received from x x T="x" 
2014-03-04 08:29:12 1WKkit-0005cD-UZ Message was delivered to xxxH=x xxx C="250 Queued (0.000 seconds)" 
2014-03-04 08:29:12 1WKkit-0005cD-UZ Completed 

文本的實際文件大得多一個日誌文本文件。

我想什麼是讀取塊這整個文件塊(空行作爲分隔符),然後將每個塊寫入到另一個預先製作的文本文件作爲我這樣做。

我目前使用的是BufferedReaderBufferedWriter但我沒有想到使用這些。

任何幫助將不勝感激,謝謝

+0

「但我不想結婚使用這些想法」..大聲笑..然後通過使用Google搜索結婚。 –

+0

請告訴我們你已經嘗試過了。 – 2014-03-07 13:28:52

+0

'如果(「\ n」 .equals(bufferReaderObject.readLine())){創建新的文件}' – Seega

回答

2

我想這是你想要什麼:

BufferedReader reader = new BufferedReader(new FileReader("text.txt")); 
    String line = null; 
    ArrayList<String> block = new ArrayList<String>(); 
    String tmp=""; 
    while ((line = reader.readLine()) != null) { 
     if(line.equals("")) 
     { 
      block.add(tmp); 
      tmp=""; 
     } 
     else 
     { 
      tmp = tmp + line; 
     } 
    } 
    block.add(tmp); 
      reader.close(); 
    System.out.println(block.size()); 
    System.out.println(block.toString()); 

只要運行一個for循環複製到另一個文本文件。

如果你希望你在與源文件

+0

不要忘記關閉的讀者,當你用它做! –

+0

哦,是的。完全忘記了這一點。更新了代碼:D –

+0

非常感謝百萬Abiel! –

2

同一格式字符串下面是一個使用StringBuilder和一個簡單的循環解決方案替換

tmp = tmp + line"; 

tmp = tmp + line+"\n"; 

。隨意調整它以滿足您的需求!

public List<String> extractBlocks(File file) throws IOException { 
    BufferedReader reader = new BufferedReader(new FileReader(file)); 

    String line; 
    StringBuilder block = new StringBuilder(); 
    List<String> blocks = new ArrayList<String>(); 
    while ((line = reader.readLine()) != null) { 
     if (line.isEmpty()) { 
      blocks.add(block.toString()); 
      block = new StringBuilder(); 
     } else { 
      block.append(line); 
     } 
    } 
    blocks.add(block.toString()); 

    reader.close(); 

    return blocks; 
} 
相關問題