【发布时间】:2010-11-26 04:19:21
【问题描述】:
如果我有一个文件,并且我想在其中写入“42”(值,而不是字符串),例如十六进制的 2a,我该怎么做?我希望能够使用类似 outfile.write(42) 或 outfile.write(2a) 的东西,而不是将字符串写入文件。
(我意识到这是一个简单的问题,但我找不到谷歌的答案,可能是因为我不知道正确的搜索词)
【问题讨论】:
如果我有一个文件,并且我想在其中写入“42”(值,而不是字符串),例如十六进制的 2a,我该怎么做?我希望能够使用类似 outfile.write(42) 或 outfile.write(2a) 的东西,而不是将字符串写入文件。
(我意识到这是一个简单的问题,但我找不到谷歌的答案,可能是因为我不知道正确的搜索词)
【问题讨论】:
【讨论】:
OutputStream os = new FileOutputStream(fileName);
String text = "42";
byte value = Byte.parseByte(text);
os.write(value);
os.close();
【讨论】:
如果你只是想写字节,以下就足够了:
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();
}
异常处理留给读者练习:-)
【讨论】:
要写入二进制数据,您需要使用OutputStream(例如FileOutputStream)。
如果您发现您的数据是以字符串形式写入的,那么您可能正在使用Writer(例如FileWriter 或包裹在FileOutputStream 周围的OutputStreamWriter)。所有名为“*Writer”或“*Reader”的东西都专门处理文本/Strings。如果你想写二进制数据,你会想避免这些。
如果您想编写不同的数据类型(而不仅仅是简单的bytes),那么您需要查看DataOutputStream。
【讨论】: