问题是当我使用FileOutputStream编写字符时,它是可读的。
但是,当我将其与DataOutputStream链接时,写入的数据将变得不可读。

这是为什么 ?由于FileOutputStreamDataInputStream都将字节写入文件。处理将如何进行?

码:

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/

10-10 17:01