- 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());
}
------解决方案--------------------------------------------------------