日期:2014-05-20  浏览次数:20930 次

请问下关于FileReader里面的read方法
Java code

package com.yaxing.io;

import java.io.FileReader;
import java.io.IOException;

public class FileReaderDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        FileReader fw = null;
        try {
            fw = new FileReader("c:\\w.txt");
//            int ch = 0;
//            while ((ch = fw.read()) != -1) {
//                System.out.println("读取:" + (char) ch);
//            }
 
            while ((fw.read()) != -1) {
                System.out.println("读取:" + (char)fw.read());
            }
        } catch (IOException e) {

            e.printStackTrace();
        } finally {
            if (fw != null) {
                try {
                    fw.close();
                } catch (IOException e) {

                    e.printStackTrace();
                }
            }
        }
    }

}



上面注释的部分读取,输出正常
而使用了下面的输出,则不正常,只输出了部分数据,为啥呢?
Java code
读取:s
读取:c
读取:1
读取:3
读取:


文本文件内容如下:
Java code
asdcr1231



Java code


while ((fw.read()) != -1) {
                System.out.println("读取:" + (char)fw.read());
            }




这里面两个 fw.read()的值不一样吗?
另外 直接输出 fw.read()这个输出的是啥呢?ascii码还是?

------解决方案--------------------
while ((fw.read()) != -1) { // 这里你已经读了一点数据了,但是没有输出。
System.out.println("读取:" + (char)fw.read());
}
------解决方案--------------------
探讨

while ((fw.read()) != -1) { // 这里你已经读了一点数据了,但是没有输出。
System.out.println("读取:" + (char)fw.read());
}