Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Java)将十进制/十六进制写入文件,而不是字符串_Java_String_Decimal_Hex - Fatal编程技术网

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

(Java)将十进制/十六进制写入文件,而不是字符串,java,string,decimal,hex,Java,String,Decimal,Hex,如果我有一个文件,并且我想逐字地将'42'写入其中(值,而不是字符串),例如,它是一个以十六进制表示的2a,我该如何做呢?我希望能够使用outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件 (我意识到这是一个简单的问题,但我找不到谷歌的答案,可能是因为我不知道正确的搜索词)要编写二进制数据,您需要使用a(例如a) 如果您发现您的数据是以字符串形式写入的,那么您可能正在使用(例如a或围绕a的包装)。所有名为“*Writer”或“*Reader”的

如果我有一个文件,并且我想逐字地将'42'写入其中(值,而不是字符串),例如,它是一个以十六进制表示的2a,我该如何做呢?我希望能够使用outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件


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

要编写二进制数据,您需要使用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();