请教一个问题:为什么总是出现“Exception in thread "main" java.lang.NullPointerException”报错?

JAVA程序代码如下importjava.io.BufferedReader;importjava.io.File;importjava.io.FileNotFoundE... JAVA程序代码如下
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;

public class CopyFile {

String sourcepath;
String aimpath;
Vector<String> vec;

public CopyFile(String sourcepath,String aimpath)
{
this.sourcepath = sourcepath;
this.aimpath = aimpath;
vec = new Vector <String> ();
}

public void Filename()
{
File f = new File(sourcepath);
String sub[] = f.list();
for(int i = 0;i < sub.length;i++)
{
/* if(sub[i].isDirectory())
{ continue;}*/
vec.addElement(sub[i]);
}
}

private boolean bakFile(String fileName)
{
try
{
//读文件
FileReader raf = new FileReader(sourcepath + fileName);
String detail = "";
BufferedReader buff = new BufferedReader(raf);
String temp = buff.readLine();
while (temp != null)
{
detail += temp + "\n";
temp = buff.readLine();
}
raf.close();
System.out.println(detail);
//写文件
File file = new File(aimpath + fileName);
PrintWriter out = new PrintWriter(new FileWriter(file));
out.print(detail);
out.close();

} catch (FileNotFoundException e)
{
System.out.println("文件没有找到");
} catch (IOException e)
{
System.out.println("copyFile 出错");
}
return true;
}

public static void main(String[] args)
{
CopyFile confile =
new CopyFile("E:\\java\\a", "E:\\JAVABASE\\b");
confile.Filename();
Vector ve = new Vector();
ve = confile.vec;
if (ve != null)
for (int i = 0; i < ve.size(); i++)
{
System.out.println((String) ve.elementAt(i));
confile.bakFile((String) ve.elementAt(i));
}
}
}

在eclipse中运行后总是出现
Exception in thread "main" java.lang.NullPointerException
at CopyFile.Filename(CopyFile.java:31)
at CopyFile.main(CopyFile.java:75)
请高手给与解答~~万分感谢~
最好能够给出解决的方法~
展开
 我来答
naturepal
2009-07-15 · TA获得超过3408个赞
知道小有建树答主
回答量:1014
采纳率:0%
帮助的人:835万
展开全部
Exception in thread "main" java.lang.NullPointerException
意思是:在main线程中出现了 java.lang.NullPointerException异常
NullPointerException就是找不到对象的意思,最有可能出现的原因就是你没有对一个对象进行赋值便开始使用,或者是你把对象的赋值写在了if语句之类的流程控制语句中
你这个程序很明显了
public void Filename()
{
File f = new File(sourcepath);
String sub[] = f.list();
for(int i = 0;i < sub.length;i++)
{
/* if(sub[i].isDirectory())
{ continue;}*/
vec.addElement(sub[i]);
}
}
这里出现了一个,原因可能是你没有对sub[i]进行赋值,检查一下程序吧
第二个没看出来,应该也是类似的吧,你并没有对Vector中的元素进行赋值便开始使用了

解决问题首先要知道问题,你给的这点代码只能看出来有毛病,怎么改就难了,解决这个异常容易,达到你要实现的功能就难了
sd1132632
2009-07-15 · TA获得超过950个赞
知道小有建树答主
回答量:2047
采纳率:0%
帮助的人:1033万
展开全部
String sub[] = f.list();
sub是null对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ragnar001
2009-07-16
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
String sub[] = f.list();
for(int i = 0;i < sub.length;i++)
{
/* if(sub[i].isDirectory())
{ continue;}*/
vec.addElement(sub[i]);
}

这段程序有问题,sub[] = f.list();只是把f的头指向了sub,所以第二行的sub.length值为0。vec.addElement(sub[i])自然没执行赋值操作。所以sub永远是空的,报空指针错误。
解决方法:建议你使用 i < f.length 试试
如果这样还不行,你把判断条件换了,不要拿长度来作为判断的条件,换个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-07-16
展开全部
空指针异常 sub[] 的值为null
你E:\java\a 这下面没有文件吧???
建个文件就不会报错了`
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式