//读取文件到时候,如果将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){
} }}

解决方案 »

  1.   

    问题是在我这里,把BufferedReader定义成全局的,可以读出文件的所有内容啊。import java.io.BufferedReader;
    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
      

  2.   

    问题是在我这里,把BufferedReader定义成全局的,可以读出文件的所有内容啊。import java.io.BufferedReader;
    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
      

  3.   

    循环过一次之后,在while里把文件所有内容读出,
    然后pbr.close();将流关闭。在for循环里,当i=1时,此时的流已经关闭了,
    再去while ((s1 = pbr.readLine()) != null) { 时已经抛出异常了。
    然后被捕获,但由于没有做任何处理,
    所以看不出什么反映。
    其实应该有个异常的,IOException( Stream closed)
    走进catch后,程序就结束了。所以在while循环后面的 System.out.println(i); 并没有输出其他数字,只有0而已。