如果我有一个文件,并且我想在字面上写'42'(值,而不是字符串),例如是十六进制的2a,我该怎么做?我希望能够使用outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件。
(我知道这是一个简单的问题,但我找不到谷歌的答案,可能是因为我不知道正确的搜索条件)
答案 0 :(得分:7)
要编写二进制数据,您需要使用OutputStream
(例如FileOutputStream
)。
如果您发现自己的数据是以字符串形式写的,那么您可能正在使用Writer
(例如FileWriter
或OutputStreamWriter
缠绕FileOutputStream
)。名为“*Writer
”或“*Reader
”的所有内容都专门处理文字/ String
。如果你想写二进制数据,你会想要避免这些。
如果您想要编写不同的数据类型(而不仅仅是普通的byte
),那么您需要查看DataOutputStream
。
答案 1 :(得分:2)
OutputStream os = new FileOutputStream(fileName);
String text = "42";
byte value = Byte.parseByte(text);
os.write(value);
os.close();
答案 2 :(得分:1)
答案 3 :(得分: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();
}
异常处理留给读者练习: - )