菜鸟提问:有关空指针

guyqq 2009-07-14 06:04:49
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行有类似空指针的错误,不知什么原因,
愿高手指教,指出其中错误,并介绍一下错误的原因,如能加以批改则不胜感激!
急求大家的答复,谢谢!
...全文
78 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyqq 2009-07-25
  • 打赏
  • 举报
回复
感激楼上壮士的回答,让我学到了一些小细节。
ltandfyy 2009-07-15
  • 打赏
  • 举报
回复
我了不知道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();
}
truediego 2009-07-15
  • 打赏
  • 举报
回复
第三行,是下面这个?
FileOutputStream out = new FileOutputStream(os);// 另存为的地址
这个地方,除非os是null,否则应该永远出现不了NullPointException啊
guyqq 2009-07-15
  • 打赏
  • 举报
回复
等了一天,没人回答我吗?
急求大家的帮助!
guyqq 2009-07-14
  • 打赏
  • 举报
回复
回复二楼的仁兄,并加以补充:
我提到的按钮就是名为“保存当前文件”,给os传的就是当前文件的名字。
但是如果没有那个“当前文件”,或者在我写的程序中尚未引入所谓的“当前文件”,则有类似“空指针”的报错。
再次感谢给予帮助的每位壮士。
kuangren987 2009-07-14
  • 打赏
  • 举报
回复
关注!
knight___li 2009-07-14
  • 打赏
  • 举报
回复
os给的是文件名或者是文件
chenql175 2009-07-14
  • 打赏
  • 举报
回复
不会,呵呵……

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧