2009-09-07 65 views
2

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

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

回答

7

对于写入二进制数据,你会想用一个OutputStream(例如FileOutputStream)。

如果你发现你的数据被写入字符串,那么你很可能使用Writer(如FileWriterOutputStreamWriter一个FileOutputStream缠)。所有名为“*Writer”或“*Reader”的文件均专门处理text/String s。如果你想写二进制数据,你会想要避免这些。

如果你想写不同的数据类型(而不仅仅是简单的byte s),那么你会想看看DataOutputStream

+0

啊!迟到了一秒钟。好的! :) – vpram86 2009-09-07 09:18:50

+0

就像有趣的一样:看看提供即时压缩的java.util.zip。*类。您可以将它们传递给DataOutputStream构造函数,并节省很多磁盘IO – 2009-09-07 09:32:18

1
+0

这里不需要使用DataOutputStream。 – 2009-09-07 09:19:21

+0

你能解释我为什么吗?无论如何,我只是说他可以使用它。:) – vpram86 2009-09-07 09:21:19

+0

如果你想写字节,那么任何OutputStream都可以。只有当你想直接写入ints/longs/float/double/...,那么你可以使用DataOutputStream为你转换字节。 – 2009-09-07 09:26:30

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(); 
} 

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

+0

实际上,如果你想写整个数组,那么“out.write(bytes)”就可以,你不需要使用3-arguments版本。 – 2009-09-07 09:28:01

+0

@Joachim:我知道。这是一个例子。 – 2009-09-07 13:00:05

2
OutputStream os = new FileOutputStream(fileName); 
    String text = "42"; 
    byte value = Byte.parseByte(text); 
    os.write(value); 
    os.close(); 
相关问题