本帖最后由 杜成龙 于 2013-10-1 09:33 编辑
先看一段程序:- import java.io.*;
- class InputStreamTest
- {
- public static void main(String[] args)
- {
- FileInputStream fis=null;
- try
- {
- //创建读取流对象,并关联要被读取的文件
- fis=new FileInputStream("fos.txt");
- int ch=0;
- //逐个字节读取并判断
- while((ch=fis.read())!=-1)
- {
- System.out.print((char)ch);
- }
- }
- catch (IOException e)
- {
- throw new RuntimeException("读取失败");
- }
- finally
- {
- if(fis!=null)
- try
- {
- //关闭流资源
- fis.close();
- }
- catch (IOException e)
- {
- throw new RuntimeException("关闭失败");
- }
- }
- }
- }
复制代码 程序运行结果为: abcde
我的fos.txt文件中就存了abcde这几个字母,看上去是对的,但是有些地方让我很不解:
程序中我使用了字节流FileInputStream去读取文件fos.txt 文件中的内容,关键是这一句:
while((ch=fis.read())!=-1)
{
System.out.print((char)ch);
}
这里fis.read()不是一个一个字节地读取吗?而我文件中的abcde里面的字母不是表示一个个的字符吗?既然每个字母是一个字符,那不表示是两个字节吗?所以你每次只相当于读了半个字符,你把半个字符强转成一个字符,怎么还能对呢?这就是我有疑问的地方,还望大家指教!谢谢啦!
|