(Java)将十进制/十六进制写入文件,而不是字符串
如果我有一个文件,并且我想逐字地将'42'写入其中(值,而不是字符串),例如,它是一个以十六进制表示的2a,我该如何做呢?我希望能够使用outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件(Java)将十进制/十六进制写入文件,而不是字符串,java,string,decimal,hex,Java,String,Decimal,Hex,如果我有一个文件,并且我想逐字地将'42'写入其中(值,而不是字符串),例如,它是一个以十六进制表示的2a,我该如何做呢?我希望能够使用outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件 (我意识到这是一个简单的问题,但我找不到谷歌的答案,可能是因为我不知道正确的搜索词)要编写二进制数据,您需要使用a(例如a) 如果您发现您的数据是以字符串形式写入的,那么您可能正在使用(例如a或围绕a的包装)。所有名为“*Writer”或“*Reader”的
(我意识到这是一个简单的问题,但我找不到谷歌的答案,可能是因为我不知道正确的搜索词)要编写二进制数据,您需要使用a(例如a) 如果您发现您的数据是以字符串形式写入的,那么您可能正在使用(例如a或围绕a的包装)。所有名为“
*Writer
”或“*Reader
”的内容都专门处理文本/字符串
s。如果你想写二进制数据,你就要避免这些
如果您想编写不同的数据类型(而不仅仅是普通的byte
s),那么您需要查看
如果您只想写入字节,以下内容就足够了:
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();
}
异常处理留给读者作为练习:-)Ah!只是晚了一秒钟。好的!:)有趣的是:看看java.util.zip.*类,它们提供动态压缩。您可以将它们传递给DataOutputStream构造函数并保存相当多的磁盘空间。这里不需要使用DataOutputStream。您能解释一下为什么吗?不管怎样,我只是说他可以用它。:)如果你想写字节,那么任何输出流都可以。仅当您要写入整数/长/浮点数/双精度/。。。直接,然后您可以使用DataOutputStream为您进行字节转换。有太多指向古代文献的链接;-)实际上,如果您想写入整个数组,那么“out.write(bytes)”就可以了,您不需要使用3参数版本。@Joachim:我知道。这就是一个例子。
OutputStream os = new FileOutputStream(fileName);
String text = "42";
byte value = Byte.parseByte(text);
os.write(value);
os.close();