问题是当我使用 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/