A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑强强 中级黑马   /  2012-4-13 13:33  /  1239 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.v512.zx;
import java.io.*;

public class TestFileInputStream {
public static void main(String[] args) {
FileInputStream in = null;
int i = 0;
try {
in = new FileInputStream("E:
workspace
6.0
zx
src
com
v512
zx
haha.txt");
} catch (FileNotFoundException e) {
System.out.println("系统找不到指定的文件。");
System.exit(-1);
}
try{
long num = 0;
while((i=in.read()) != -1){
System.out.println((char)i);
num++;
in.close();
}

} catch (IOException e) {
System.out.println("读取失败。");
System.exit(-1);
}
}

}

控制台输出
f
读取失败。why?



3 个回复

倒序浏览
while((i=in.read()) != -1){
System.out.println((char)i);
num++;
in.close();
}
你的文件还没读完就关闭流了,in.close();应该放在循环外边。你修改一下再试试!
回复 使用道具 举报
你在while循环中读取了第一个字符之后就将文件流给关闭了,当再次读取的时候因为文件流已经关闭,所以执行catch中的代码了,你应该将文件内容读取完之后再关闭,一般将close()语句放在finally代码块中
回复 使用道具 举报
while((i=in.read()) != -1){
System.out.println((char)i);
num++;
in.close();
}
楼主,while循环读取文件的时候读取到第一个字节就把输入流给关闭了,read()方法每次只读取一个字节,所以你要in.close()放到while循环外面!


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马