//读取文件到时候,如果将BufferedReader定义成全局变量,则在for()循环的时候只能第一次读取,若定义在循环内,
即每次循环进行一次定义,才能每次循环都读取到问题内容,为什么呢?谢谢各位请指点指点~~
读取文件部分的代码如下
package hello;
import java.io.*;public class Frtest {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{ //FileReader pass = new FileReader("/pass.txt");
//BufferedReader pbr = new BufferedReader(pass); int i = 0;
String s1 = null; for(i=0;i<10;i++)
{
//读取文件到时候
//如果将BufferedReader定义成全局变量,则在for()循环的时候只能第一次读取,若定义在循环内,
//即每次循环进行一次定义,才能每次循环都读取到问题内容,为什么呢? FileReader pass = new FileReader("/home/hellfish/Codecs/shell/pass.txt");
BufferedReader pbr = new BufferedReader(pass);
while((s1 = pbr.readLine()) != null)
{
System.out.println(s1); }
System.out.println(i);
pbr.close();
}
//pbr.close();
}catch(final Exception e){
} }}
即每次循环进行一次定义,才能每次循环都读取到问题内容,为什么呢?谢谢各位请指点指点~~
读取文件部分的代码如下
package hello;
import java.io.*;public class Frtest {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{ //FileReader pass = new FileReader("/pass.txt");
//BufferedReader pbr = new BufferedReader(pass); int i = 0;
String s1 = null; for(i=0;i<10;i++)
{
//读取文件到时候
//如果将BufferedReader定义成全局变量,则在for()循环的时候只能第一次读取,若定义在循环内,
//即每次循环进行一次定义,才能每次循环都读取到问题内容,为什么呢? FileReader pass = new FileReader("/home/hellfish/Codecs/shell/pass.txt");
BufferedReader pbr = new BufferedReader(pass);
while((s1 = pbr.readLine()) != null)
{
System.out.println(s1); }
System.out.println(i);
pbr.close();
}
//pbr.close();
}catch(final Exception e){
} }}
解决方案 »
- 已定义类型..很简单的一个代码问题求教
- 数据库读取生成JTREE出问题了,大家给点建议。谢谢
- 哪儿有netbeans6.5的教程呢?
- 为什么接口中的域都隐含为static和final?
- 最好的操作XML文件的方法
- 急!该怎么加?
- 为什么把我自己编的聊天小程序放到JApplet中就不好用了?
- 在JAVA中该如何调用dll库中的函数,来执行库函数功能呢,请诸位助我!那每个库函数怎么调,来使用呢在JAVA中
- “包” 问题,有人问过,但还是想要个明白点的答复。。
- 我想使用java访问access的数据库,如何加载jdbc
- 简单Jtable问题 菜鸟问题 得分好题!
- 如何理解final域(常量)在编译时的优化,以及与字节码的关系?
import java.io.FileReader;public class Frtest {
public static void main(String[] args) {
try { FileReader pass = new FileReader("pass.txt");
BufferedReader pbr = new BufferedReader(pass); int i = 0;
String s1 = null; for (i = 0; i < 10; i++) { // 读取文件到时候
// 如果将BufferedReader定义成全局变量,则在for()循环的时候只能第一次读取,若定义在循环内,
// 即每次循环进行一次定义,才能每次循环都读取到问题内容,为什么呢?// FileReader pass = new FileReader("/home/hellfish/Codecs/shell/pass.txt");
// BufferedReader pbr = new BufferedReader(pass);
while ((s1 = pbr.readLine()) != null) { System.out.println(s1); }
System.out.println(i);
pbr.close();
}
// pbr.close(); } catch (final Exception e) {
} }
}
在我的工程下有个 pass.txt内容为
1111
2222
3333实行结果就是:
1111
2222
3333
0
import java.io.FileReader;public class Frtest {
public static void main(String[] args) {
try { FileReader pass = new FileReader("pass.txt");
BufferedReader pbr = new BufferedReader(pass); int i = 0;
String s1 = null; for (i = 0; i < 10; i++) { // 读取文件到时候
// 如果将BufferedReader定义成全局变量,则在for()循环的时候只能第一次读取,若定义在循环内,
// 即每次循环进行一次定义,才能每次循环都读取到问题内容,为什么呢?// FileReader pass = new FileReader("/home/hellfish/Codecs/shell/pass.txt");
// BufferedReader pbr = new BufferedReader(pass);
while ((s1 = pbr.readLine()) != null) { System.out.println(s1); }
System.out.println(i);
pbr.close();
}
// pbr.close(); } catch (final Exception e) {
} }
}
在我的工程下有个 pass.txt内容为
1111
2222
3333实行结果就是:
1111
2222
3333
0
然后pbr.close();将流关闭。在for循环里,当i=1时,此时的流已经关闭了,
再去while ((s1 = pbr.readLine()) != null) { 时已经抛出异常了。
然后被捕获,但由于没有做任何处理,
所以看不出什么反映。
其实应该有个异常的,IOException( Stream closed)
走进catch后,程序就结束了。所以在while循环后面的 System.out.println(i); 并没有输出其他数字,只有0而已。