java中的二进制文件

sah*_*har 0 java binaryfiles

我知道文本编辑器无法读取二进制文件,只能由程序读取.但是当我使用java(字节)创建二进制文件时,我可以打开文件并读取它吗?为什么会这样?换句话说,我看到一个纯文本而不是一系列零和一个.我知道在java中有基于字节的流和基于字符的流.当我使用基于字节的流(如FileOutputStream)时,输出是字符而不是字节.

    File file = new File("Myfile.dat"); // .txt or .bin
    FileOutputStream fos = new FileOutputStream(file);
    String data = "Hello, world";
    fos.write(data.getBytes());
    fos.close();
Run Code Online (Sandbox Code Playgroud)

当我使用记事本打开Myfile.dat时,我希望看到特殊字符或0和1但我可以阅读内容"hello world".所以我不清楚基于字节的流如何以二进制格式存储字符?

Dav*_*ton 6

并不是文本编辑器无法读取"二进制文件",而是"无法以有意义的方式读取/编辑包含对文本编辑器无用的字符的二进制文件".毕竟,所有文件都是二进制的:它只取决于它们中包含的内容.