问题是当我使用FileOutputStream
编写字符时,它是可读的。
但是,当我将其与DataOutputStream
链接时,写入的数据将变得不可读。
这是为什么 ?由于FileOutputStream
和DataInputStream
都将字节写入文件。处理将如何进行?
码:
File newFile = new File("C:\\Jeevantest.as");
FileOutputStream outFp = new FileOutputStream(newFile);
outFp.write('X');
outFp.close();
In the file Jeevantest.as, the char 'X' can be seen.
File newFile = new File("C:\\Jeevantest.as");
FileOutputStream outFp = new FileOutputStream(newFile);
DataOutputStream dp = new DataOutputStream(outFp);
dp.writeChar('J');
outFp.close();
在这种情况下,显示以下输出:
需要了解为什么?
最佳答案
区别不在于OutputStreams
,而在于您使用的写入方法:它们不同。在第一个示例中,您使用dp.write()
,在第二个示例中,您使用dp.writeChar()
。
在第二个示例中,将dp.writeChar()
更改为dp.write()
,结果将与预期的一样。java.io.DataOutputStream.writeChar(int)
方法的实现如下:
public final void writeChar(int v) throws IOException {
out.write((v >>> 8) & 0xFF);
out.write((v >>> 0) & 0xFF);
incCount(2);
}
请参见
writeChar(int)
的源代码而
java.io.DataOutputStream.write(int)
具有以下实现: public synchronized void write(int b) throws IOException {
out.write(b);
incCount(1);
}
请参见
write(int)
的源代码关于java - FileOutputStream和DataOutput Stream的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21901251/