2009-09-07 70 views
2

如果我有一個文件,並且我想直接向它寫入'42'(值,而不是字符串),例如, , 我該怎麼做?我想能夠使用像outfile.write(42)或outfile.write(2a)之類的東西,而不是將字符串寫入文件。(Java)將十進制/十六進制寫入文件,而不是字符串

(我知道這是一個簡單的問題,但我無法找到谷歌的答案,可能是因爲我不知道正確的搜索字詞)

回答

7

對於寫入二進制數據,你會想用一個OutputStream(例如FileOutputStream)。

如果你發現你的數據被寫入字符串,那麼你很可能使用Writer(如FileWriterOutputStreamWriter一個FileOutputStream纏)。所有名爲「*Writer」或「*Reader」的文件均專門處理text/String s。如果你想寫二進制數據,你會想要避免這些。

如果你想寫不同的數據類型(而不僅僅是簡單的byte s),那麼你會想看看DataOutputStream

+0

啊!遲到了一秒鐘。好的! :) – vpram86 2009-09-07 09:18:50

+0

就像有趣的一樣:看看提供即時壓縮的java.util.zip。*類。您可以將它們傳遞給DataOutputStream構造函數,並節省很多磁盤IO – 2009-09-07 09:32:18

1
+0

這裏不需要使用DataOutputStream。 – 2009-09-07 09:19:21

+0

你能解釋我爲什麼嗎?無論如何,我只是說他可以使用它。:) – vpram86 2009-09-07 09:21:19

+0

如果你想寫字節,那麼任何OutputStream都可以。只有當你想直接寫入ints/longs/float/double/...,那麼你可以使用DataOutputStream爲你轉換字節。 – 2009-09-07 09:26:30

0

如果只是想寫個字節,以下就足夠了:

import java.io.*; 
... 
OutputStream out = new FileOutputStream("MyFile"); 
try { 
    // Write one byte ... 
    out.write((byte) 42); 
    // Write multiple bytes ... 
    byte[] bytes = ... 
    int nosWritten = out.write(bytes, 0, bytes.length); 

} finally { 
    out.close(); 
} 

異常處理留給作爲練習讀者:-)

+0

實際上,如果你想寫整個數組,那麼「out.write(bytes)」就可以,你不需要使用3-arguments版本。 – 2009-09-07 09:28:01

+0

@Joachim:我知道。這是一個例子。 – 2009-09-07 13:00:05

2
OutputStream os = new FileOutputStream(fileName); 
    String text = "42"; 
    byte value = Byte.parseByte(text); 
    os.write(value); 
    os.close(); 
相關問題