如果我有一个文件,并且我想直接向它写入'42'(值,而不是字符串),例如, , 我该怎么做?我想能够使用像outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件。(Java)将十进制/十六进制写入文件,而不是字符串
(我知道这是一个简单的问题,但我无法找到谷歌的答案,可能是因为我不知道正确的搜索字词)
如果我有一个文件,并且我想直接向它写入'42'(值,而不是字符串),例如, , 我该怎么做?我想能够使用像outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件。(Java)将十进制/十六进制写入文件,而不是字符串
(我知道这是一个简单的问题,但我无法找到谷歌的答案,可能是因为我不知道正确的搜索字词)
对于写入二进制数据,你会想用一个OutputStream
(例如FileOutputStream
)。
如果你发现你的数据被写入字符串,那么你很可能使用Writer
(如FileWriter
或OutputStreamWriter
一个FileOutputStream
缠)。所有名为“*Writer
”或“*Reader
”的文件均专门处理text/String
s。如果你想写二进制数据,你会想要避免这些。
如果你想写不同的数据类型(而不仅仅是简单的byte
s),那么你会想看看DataOutputStream
。
这里不需要使用DataOutputStream。 – 2009-09-07 09:19:21
你能解释我为什么吗?无论如何,我只是说他可以使用它。:) – vpram86 2009-09-07 09:21:19
如果你想写字节,那么任何OutputStream都可以。只有当你想直接写入ints/longs/float/double/...,那么你可以使用DataOutputStream为你转换字节。 – 2009-09-07 09:26:30
如果只是想写个字节,以下就足够了:
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();
}
异常处理留给作为练习读者:-)
实际上,如果你想写整个数组,那么“out.write(bytes)”就可以,你不需要使用3-arguments版本。 – 2009-09-07 09:28:01
@Joachim:我知道。这是一个例子。 – 2009-09-07 13:00:05
OutputStream os = new FileOutputStream(fileName);
String text = "42";
byte value = Byte.parseByte(text);
os.write(value);
os.close();
啊!迟到了一秒钟。好的! :) – vpram86 2009-09-07 09:18:50
就像有趣的一样:看看提供即时压缩的java.util.zip。*类。您可以将它们传递给DataOutputStream构造函数,并节省很多磁盘IO – 2009-09-07 09:32:18