(Java)将十进制/十六进制写入文件,而不是字符串

时间:2009-09-07 09:15:53

标签: java string decimal hex

如果我有一个文件,并且我想在字面上写'42'(值,而不是字符串),例如是十六进制的2a,我该怎么做?我希望能够使用outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件。

(我知道这是一个简单的问题,但我找不到谷歌的答案,可能是因为我不知道正确的搜索条件)

4 个答案:

答案 0 :(得分:7)

要编写二进制数据,您需要使用OutputStream(例如FileOutputStream)。

如果您发现自己的数据是以字符串形式写的,那么您可能正在使用Writer(例如FileWriterOutputStreamWriter缠绕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();
}

异常处理留给读者练习: - )