public void SaveImage(String os) {
try {
FileOutputStream out = new FileOutputStream(os);// 另存为的地址
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bi); out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}我在程序里面有如上的代码,一个按钮响应时将对其进行调用,
在编译试运行时,显示在上面代码的第3行有类似空指针的错误,不知什么原因,
愿高手指教,指出其中错误,并介绍一下错误的原因,如能加以批改则不胜感激!
急求大家的答复,谢谢!

解决方案 »

  1.   

    第三行,是下面这个?
    FileOutputStream out = new FileOutputStream(os);// 另存为的地址 
    这个地方,除非os是null,否则应该永远出现不了NullPointException啊
      

  2.   

    我了不知道LZ指的类似空指针的错误是什么意思,如果就是空指针,楼上的已经说了,这个地方还可能出现java.io.FileNotFoundException异常,原因是系统找不到指定的路径。也就是说路径中包含了未创建的文件夹,并不是文件,要保证文件夹已经创建,这句才不会抛这个异常,可以先用File来做判断,如果文件夹都不存在,则创建。
    但File与FileOutputStream刚好相反,File不能在解决文件夹问题的同时解决文件不存在的问题,而FileOutputStream只要文件夹存在,文件可以创建,File也可以创建文件,但首先要文件夹存在,这样如果LZ这里的os是个带文件名的全路径的话:
    首先要知道os的格式,用的是\还是/的形式?不知道也没关系,做一次全替换,然后截取出文件夹,创建文件夹,再调用new FileOutputStream(os);也行,用File来创建文件也行。代码如下://把所有反斜杠换成正斜杠,好做统一处理
    os = os.replaceAll("\\\\","/");
    //将文件名除外的文件夹名截取出来
    os = os.substring(0,os.lastIndexOf("/"));
    File file = new File(os);
    //看这样一个文件夹路径存不存在
    if(!file.exists()) {
        //如果不存在,则创建,这里可以同时创建含有子文件夹的情况
        file.mkdirs();
    }