2014-03-30 56 views
0

我正在做一個需要處理的文件太多的項目。問題就來了,當我必須提供的文件不同的方式,如:java中不同類型的文件

  1. 文件將包含一個字符串中的每一行
  2. 數字字符的每行如:

    1st line : A B 4 
    
    2nd line : 6 C A 6 & U # 
    
    etc. 
    
  3. 文件將包含no。字符串例如

    第一行:獅豹美洲豹等

我已閱讀如何有效地處理文件,但我很困惑時使用緩衝流和無緩衝時。如果我使用BufferedStream,則應使用BufferInputStreamBufferReader/BufferWriter

同樣我與混淆I/O流,文件I/O流,ByteArray的I/O流。有這麼多的事情。任何人都可以建議我何時使用哪一個,爲什麼?根據不同的情況可以有效處理什麼?

+1

你讀過他們的javadoc瞭解他們用於什麼?你讀過IO教程嗎?前兩部分至少會告訴你,流是用於字節的,讀者/作者是用於字符的。 http://docs.oracle.com/javase/tutorial/essential/io/ –

+0

是的,我已經讀過它,我清楚字節和字符的概念,也與系統調用。問題只有在何時進行高效處理時纔會使用。 –

+0

還有一個問題是如何從文件中一次讀取一個字符串,如果我們有像 獅子豹美洲豹 現在我想先讀獅子然後豹,然後捷豹對這些數據執行不同的操作。誰能幫我 ? 與我們在任何包含相同數據的編程競賽輸入文件中得到的結果類似。 –

回答

1

嗯,這可能沒有直接的答案,但你不必擔心,如果你感到困惑。關於緩衝的討論沒有緩衝已經做過很多次了。

例如在此鏈接:bufferred vs non-bufferred,給出了一個很好的提示(檢查標記爲正確的答案)。這是因爲在使用緩衝流時,這些流存儲在稱爲(令人驚訝的)緩衝區的小區域內存中。寫入的數據也會發生同樣的情況(它們在存入硬盤之前會進入緩衝區)。這可以提高性能,因爲降低了I/O操作的開銷(取決於操作系統)。檢查Java文檔:Bufferred Streams

所以,要清楚,使用Bufferred流時,你需要提高你的I/O操作的性能。使用Unbufferred數據流當你想確保輸出在繼續之前被寫入時(因爲在從/向緩衝區寫入時可能總是發生錯誤,例如,當你想寫一個日誌時,它可能會全部打開時間,所以不需要訪問它,不需要緩衝區)。

+0

您的建議是,通過寫入緩衝區可以使其變慢,與您的其他帖子相矛盾。 – EJP

相關問題