如果我有一個文件,並且我想直接向它寫入'42'(值,而不是字符串),例如, , 我該怎麼做?我想能夠使用像outfile.write(42)或outfile.write(2a)之類的東西,而不是將字符串寫入文件。(Java)將十進制/十六進制寫入文件,而不是字符串
(我知道這是一個簡單的問題,但我無法找到谷歌的答案,可能是因爲我不知道正確的搜索字詞)
如果我有一個文件,並且我想直接向它寫入'42'(值,而不是字符串),例如, , 我該怎麼做?我想能夠使用像outfile.write(42)或outfile.write(2a)之類的東西,而不是將字符串寫入文件。(Java)將十進制/十六進制寫入文件,而不是字符串
(我知道這是一個簡單的問題,但我無法找到谷歌的答案,可能是因爲我不知道正確的搜索字詞)
對於寫入二進制數據,你會想用一個OutputStream
(例如FileOutputStream
)。
如果你發現你的數據被寫入字符串,那麼你很可能使用Writer
(如FileWriter
或OutputStreamWriter
一個FileOutputStream
纏)。所有名爲「*Writer
」或「*Reader
」的文件均專門處理text/String
s。如果你想寫二進制數據,你會想要避免這些。
如果你想寫不同的數據類型(而不僅僅是簡單的byte
s),那麼你會想看看DataOutputStream
。
這裏不需要使用DataOutputStream。 – 2009-09-07 09:19:21
你能解釋我爲什麼嗎?無論如何,我只是說他可以使用它。:) – vpram86 2009-09-07 09:21:19
如果你想寫字節,那麼任何OutputStream都可以。只有當你想直接寫入ints/longs/float/double/...,那麼你可以使用DataOutputStream爲你轉換字節。 – 2009-09-07 09:26:30
如果只是想寫個字節,以下就足夠了:
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();
}
異常處理留給作爲練習讀者:-)
實際上,如果你想寫整個數組,那麼「out.write(bytes)」就可以,你不需要使用3-arguments版本。 – 2009-09-07 09:28:01
@Joachim:我知道。這是一個例子。 – 2009-09-07 13:00:05
OutputStream os = new FileOutputStream(fileName);
String text = "42";
byte value = Byte.parseByte(text);
os.write(value);
os.close();
啊!遲到了一秒鐘。好的! :) – vpram86 2009-09-07 09:18:50
就像有趣的一樣:看看提供即時壓縮的java.util.zip。*類。您可以將它們傳遞給DataOutputStream構造函數,並節省很多磁盤IO – 2009-09-07 09:32:18