2011-09-13 83 views
1

我在通過java編寫的文本文件中存儲大量信息。我有兩個與此有關的問題:以二進制或字節碼寫入文件

  1. 是否有任何效率提升寫入字符串的二進制或字節碼?

  2. 我會用什麼來將數據類型寫入文件。

我已經有一個基於字符串的設置,但我想比較,至少知道如何寫字節碼或二進制文件。

當我讀入文件時,它會再次被翻譯成字符串,但根據我的研究,如果我直接將文件寫入字節碼,它會刪除字符串和代碼之間翻譯的兩端添加的過程,文件和閱讀它。


超有大約只用絃樂反正好點,但我仍然有興趣在如何如何,如果寫在文件中不同的數據類型。

換句話說,我是否仍然可以使用FileReader和BufferedReader來讀取並轉換回字符串,或者還有其他的東西需要使用。還使用BinaryWriter,它仍然只是我使用的FileWriter類?

+1

我的第一個想法是,你會加倍所需的存儲量(除非你寫了很多非ASCII文本)。對於ASCII文本,UTF-8每個字符需要1個字節,但是如果您編寫了一個原始字符串,則每個字符需要2個字節。 – cHao

+1

此外,除非你在談論序列化,否則不要寫「字節碼」中的字符串。即使那樣,它也不是那樣的。字節碼是JVM指令。 – cHao

+0

@cHao。總是善於學習新的:P。那麼這就把它留給直接的二進制呢? – Andy

回答

0

如果你想寫在「二進制」,並且你想節省空間,爲什麼不使用jdk壓縮它?滿足您的所有要求。

+0

我對空間方面如此不感興趣,我對減少爲了速度的興趣而需要讀取的處理能力的數量感興趣,空間是次要的,甚至在地圖上,因爲我沒有真正關心它。 – Andy

+0

那麼你的問題是模糊的;如果您正在編寫字符串數據,並且正在讀取字符串數據,則任何翻譯步驟都需要更多時間。在某些文件大小下,數據量將成爲門控因子,壓縮/解壓縮將會更快。讀取和寫入數據不是一項CPU密集型任務,但在某些情況下,總體上可以減少正在讀取/寫入的數據量。 –

+0

Java總是將字符串轉換爲另一種形式,我很確定,並且我知道String字符= 2個字節,使空間加倍,如果我沒有弄錯,結果是它需要兩倍的時間才能讀取。但是,聽起來好像我錯了...... P:感謝您的幫助,我會再等一會兒,看看答案是否能解決我問題的第二部分。 – Andy