日期:2014-05-20  浏览次数:20950 次

关于关闭输入流的问题
import java.io.File;
import java.io.FileInputStream;
public class main {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
FileInputStream fis =null;
fis = new FileInputStream ("d:/test/11.txt");
byte [] data = new byte [1024];
int i = 0;
int n = fis.read(data);

String s = new String(data,0,n);
System.out.println(s);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
fis.close();

}catch(Exception e){
System.out.println("cao");
}

}

}

}
小弟刚开始学java,这是在学习输入流的时候写的一段代码,可是编译的时候在fis.close()这里出了问题,eclipse给出的提示是fis cannot be resolved,这是怎么意思啊?
还有那位大哥能给解释一下是什么是j2ee,java ee,java se么,百度搜索了一下还是不理解这几个的区别。谢谢

------解决方案--------------------
Java里面的语句块是以 "{" 开始,以"}"结束,在语句块内定义的变量的作用域只是当前语句块,所以fis 会报未定义,你可以把FileInputStream fis定义为全局变量,这样就没有问题了。
j2ee==java ee,只不过j2ee这个叫法是很久以前的叫法,现在叫java ee

------解决方案--------------------
FileInputStream fis = null;
定义到try外面就行了。
------解决方案--------------------
你声明的fis的作用域不在finally里面,所以在finally的时候不认,看我改的就可以了
j2ee j2se这些东西你需要继续多学习才行,现在跟你说也就是个模糊的样子
你只需要知道j2ee的类库跟j2se不一样,j2ee依赖于j2se就可以了
Java code


import java.io.File;
import java.io.FileInputStream;
public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
// TODO Auto-generated method stub
        FileInputStream fis =null;
        try{

            fis = new FileInputStream ("d:/test/11.txt");
            byte [] data = new byte [1024];
            int i = 0;
            int n = fis.read(data);

            String s = new String(data,0,n);
            System.out.println(s);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                fis.close();

            }catch(Exception e){
                System.out.println("exception");
            }

        }

    }

}

------解决方案--------------------
探讨
谁教你那么写的
finally里面还嵌套try catch。。。