本帖最后由 小黑子 于 2014-10-11 22:14 编辑
毕老师说,字符流实际上就是调用的字节流,只不过字符流里面有编码表。
然后我就理解为字符流中的编码表,字节流中没有编码表。写了个字节流读写文件的代码来验证自己的想法:
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- class InputOutputStreamDemo
- {
- public static void main(String[] args) throws IOException
- {
- FileInputStream fis = new FileInputStream("PropertiesDemo.java");
- FileOutputStream fos = new FileOutputStream("F:/PropertiesDemo.txt");
- //一次读一个
- int b = 0;
- while((b=fis.read())!=-1)
- {
- fos.write(b);
- }
- fis.close();
- fos.close();
- }
- }
复制代码 在这个fis所读取的文件中, 中文 和 英文 都有。 结果中、英都能在PropertiesDemo.txt中正常显示。问题1 :如果字节流中没有编码表,那么读取的中文为什么会正常写入另一个文件???一个中文不是占两个字节么?而字节流是一个字节一个字节读,一个字节一个字节存的啊。
问题2 :那字节流中的英文又是怎么进行读写的呢?我猜想的是:
假设:读文件 PropertiesDemo.java 中存在一个字母 A (它的ASCII码为:01000001)
则读取流中就会读入01000001
然后输出流中获取这个01000001,将之强转为char再写入到文件 PropertiesDemo.txt 中
我的猜想对不对呢?
|