import java.io.*;
public class TestFileInputStream { public static void main(String[] args) {
int b=0;
// FileInputStream in=null;这里不定义在接下来的try里面定义in就出错,怎么回事啊?
try {
FileInputStream in=new FileInputStream("G:\\JAVA\\share\\src\\TestFileInputStream.java");
} catch (FileNotFoundException e) {
e.printStackTrace();
}

try{
long num=0;
while((b=in.read())!=-1){
System.out.print((char)b);
num++;
}
in.close();
System.out.println();
System.out.println("共读取了 "+num+"个字节");
}catch(IOException e){
System.out.println("文件已复制");
System.exit(-1);
} }}

解决方案 »

  1.   

    在try内部定义的变量作用域只是try的括号以内...
      

  2.   

    因为in.read()in.close();中in已经不再变量的作用域里了。回答完毕。
      

  3.   

    你的代码应该改成这样:
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    public class TestFileInputStream { public static void main(String[] args) {
            int b=0;
            FileInputStream in=null;//这里不定义在接下来的try里面定义in就出错,怎么回事啊?
            try {
                in=new FileInputStream("G:\\JAVA\\share\\src\\TestFileInputStream.java");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            
            try{
                long num=0;
                while((b=in.read())!=-1){
                    System.out.print((char)b);
                    num++;
                }
                in.close();
                System.out.println();
                System.out.println("共读取了 "+num+"个字节");
            }catch(IOException e){
                System.out.println("文件已复制");
                System.exit(-1);
            }    }}
      

  4.   

    你如果在try {代码}里申请变量那就是局部变量,出了try代码块就不好使了.下面你要用in就失效了。另外,我觉得程序里写一个try-catch就可以了,不必那么多.我修改了你的代码:import java.io.*;
    public class TestFileInputStream {    public static void main(String[] args) {
            int b=0;
    //      FileInputStream in=null;这里不定义在接下来的try里面定义in就出错,怎么回事啊?
            try {
                in=new FileInputStream("G:\\JAVA\\share\\src\\TestFileInputStream.java");     long num=0;
                while((b=in.read())!=-1){
                    System.out.print((char)b);
                    num++;
                }
                in.close();
                System.out.println();
                System.out.println("共读取了 "+num+"个字节");        } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
              catch(IOException e){
                System.out.println("文件已复制");
                System.exit(-1);
            }    }}