请教一个问题:为什么总是出现“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)
请高手给与解答~~万分感谢~
最好能够给出解决的方法~ 展开
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)
请高手给与解答~~万分感谢~
最好能够给出解决的方法~ 展开
4个回答
展开全部
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中的元素进行赋值便开始使用了
解决问题首先要知道问题,你给的这点代码只能看出来有毛病,怎么改就难了,解决这个异常容易,达到你要实现的功能就难了
意思是:在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中的元素进行赋值便开始使用了
解决问题首先要知道问题,你给的这点代码只能看出来有毛病,怎么改就难了,解决这个异常容易,达到你要实现的功能就难了
展开全部
String sub[] = f.list();
sub是null对象
sub是null对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 试试
如果这样还不行,你把判断条件换了,不要拿长度来作为判断的条件,换个
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 这下面没有文件吧???
建个文件就不会报错了`
你E:\java\a 这下面没有文件吧???
建个文件就不会报错了`
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询