永发信息网

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

答案:5  悬赏:0  手机版
解决时间 2021-12-24 16:56
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++)
{

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)
请高手给与解答~~万分感谢~
最好能够给出解决的方法~
最佳答案
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++)
{

vec.addElement(sub[i]);
}
}
这里出现了一个,原因可能是你没有对sub[i]进行赋值,检查一下程序吧
第二个没看出来,应该也是类似的吧,你并没有对Vector中的元素进行赋值便开始使用了

解决问题首先要知道问题,你给的这点代码只能看出来有毛病,怎么改就难了,解决这个异常容易,达到你要实现的功能就难了
全部回答
空指针异常 sub[] 的值为null 你E:\java\a 这下面没有文件吧??? 建个文件就不会报错了`
String sub[] = f.list(); for(int i = 0;i < sub.length;i++) { vec.addElement(sub[i]); } 这段程序有问题,sub[] = f.list();只是把f的头指向了sub,所以第二行的sub.length值为0。vec.addElement(sub[i])自然没执行赋值操作。所以sub永远是空的,报空指针错误。 解决方法:建议你使用 i < f.length 试试 如果这样还不行,你把判断条件换了,不要拿长度来作为判断的条件,换个
你好,出错的原因在这里: public studentinfo[] student = new studentinfo[100]; 上面的数组开辟了100长度,但是每个元素的默认值都是null,仔细想想是不是? 所以解决办法就是: string innerstudent(string id, string yx, string zz, string phone) { studentinfo si = new studentinfo() ; int count = 0; for (int i = 0; i < 100; i++) { if(i == 0 && student[i] == null){ student[i] = si ; }else if (student[i] != null) { count++; }else{ student[count].setid(id); student[count].setyx(yx); student[count].setzz(zz); student[count].setphone(phone); system.out.println("新增成功!"); break ; } } return id; }
String sub[] = f.list(); sub是null对象
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
纽曼的售后服务点维修便宜还是外面的修mp3的
今天2月1号可以买2月11号的火车票吗?去火车
I can speak a little English是什么意思
谁能告诉我,艾特我,是什么意思?
销售打领带
朋友被她老公拉到了黑名单,微信也拉黑了,怎
我的手机屏幕太冷就会黑屏热了就恢复了是什么
给公司干了两个月,现在公司要辞退了,有赔偿吗
2018年初级会计师报名时间是什么时候
女生126是什么意思?
头嘴有点像老虎,腿和爪子都像虎的,体形大,
遇上工作态度不认真,没责任心,没积极性的同
弟弟结婚,作为姐姐应该穿什么衣服最合适
WOW死亡骑士部落选什么种族最好?
目前的系统是win7SP1,IE浏览器是9.0的,由于
推荐资讯
贵阳市宅吉派出所户籍科电话
下面图形中,哪些图形的阴影部分占整个图形的
扬州有哪些特色小吃,好玩的地方
糖豆广场舞视频怎么发送到电脑
你好 你在肯德基工作过吗 她们的五险一金从工
In Germany there are different kinds of hi
惠农区红果子城市管理执法中队在什么地方啊,
宇菲尔家纺(昆山专卖店)地址在什么地方,想过
【小题1】 My frist(第一的)name is Jack. Wh
《春夜喜雨》是一首(五言)律诗,第一句是(
椰子汁什么味道
1996年四月初八出生的女子取什么名字好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?