黑马程序员技术交流社区

标题: 小问题 [打印本页]

作者: 郑强强    时间: 2012-4-13 13:33
标题: 小问题
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?




作者: 刘旭    时间: 2012-4-13 13:53
while((i=in.read()) != -1){
System.out.println((char)i);
num++;
in.close();
}
你的文件还没读完就关闭流了,in.close();应该放在循环外边。你修改一下再试试!
作者: 蒋亮    时间: 2012-4-13 17:16
你在while循环中读取了第一个字符之后就将文件流给关闭了,当再次读取的时候因为文件流已经关闭,所以执行catch中的代码了,你应该将文件内容读取完之后再关闭,一般将close()语句放在finally代码块中
作者: 陈坚    时间: 2012-4-13 17:39
while((i=in.read()) != -1){
System.out.println((char)i);
num++;
in.close();
}
楼主,while循环读取文件的时候读取到第一个字节就把输入流给关闭了,read()方法每次只读取一个字节,所以你要in.close()放到while循环外面!







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2