JAVA空指针问题
importjava.io.*;publicclassFileCopy{publicstaticvoidmain(Stringargs[])throwsIOExcepti...
import java.io.*;
public class FileCopy {
public static void main(String args[]) throws IOException{
String url1 = "F:/音乐";
String url2 = "e:/testcopy";
File f1 = new File(url1);
File f2 = new File(url2);
File[] flist = f1.listFiles();
int len=0;
while(len<flist.length){
if(flist[len].isFile()){
copyFile(flist[len],new File(url2+File.separator+flist[len].getName()));
}else if(flist[len].isDirectory()){
String dirname1 = url1 + flist[len].getName();
String dirname2 = url2 + flist[len].getName();
copyDirectory(dirname1,dirname2);
}
len++ ;
}
}
public static void copyDirectory(String dirname1, String dirname2) throws IOException {
// TODO Auto-generated method stub
(new File(dirname2)).mkdir();
File[] flist =(new File(dirname1)).listFiles();
for(int len=0 ; flist[len]!=null ;len++){
if(flist[len].isFile()){
copyFile(flist[len],new File(dirname2+File.separator+flist[len].getName()));
}else if(flist[len].isDirectory()){
String dir1 = dirname1 + flist[len].getName();
String dir2 = dirname2 + flist[len].getName();
copyDirectory(dir1,dir2);
}
}
}
public static void copyFile(File f1,File f2) throws IOException{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(f1));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(f2));
byte[] b = new byte[1024*5];
int len ;
while((len = in.read(b))!=-1){
out.write(b,0,len);
}
in.close();
out.close();
}
}
Exception in thread "main" java.lang.NullPointerException
at FileCopy.copyDirectory(FileCopy.java:30)
at FileCopy.main(FileCopy.java:19)
也就是
copyDirectory(dirname1,dirname2);
for(int len=0 ; flist[len]!=null ;len++){ 展开
public class FileCopy {
public static void main(String args[]) throws IOException{
String url1 = "F:/音乐";
String url2 = "e:/testcopy";
File f1 = new File(url1);
File f2 = new File(url2);
File[] flist = f1.listFiles();
int len=0;
while(len<flist.length){
if(flist[len].isFile()){
copyFile(flist[len],new File(url2+File.separator+flist[len].getName()));
}else if(flist[len].isDirectory()){
String dirname1 = url1 + flist[len].getName();
String dirname2 = url2 + flist[len].getName();
copyDirectory(dirname1,dirname2);
}
len++ ;
}
}
public static void copyDirectory(String dirname1, String dirname2) throws IOException {
// TODO Auto-generated method stub
(new File(dirname2)).mkdir();
File[] flist =(new File(dirname1)).listFiles();
for(int len=0 ; flist[len]!=null ;len++){
if(flist[len].isFile()){
copyFile(flist[len],new File(dirname2+File.separator+flist[len].getName()));
}else if(flist[len].isDirectory()){
String dir1 = dirname1 + flist[len].getName();
String dir2 = dirname2 + flist[len].getName();
copyDirectory(dir1,dir2);
}
}
}
public static void copyFile(File f1,File f2) throws IOException{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(f1));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(f2));
byte[] b = new byte[1024*5];
int len ;
while((len = in.read(b))!=-1){
out.write(b,0,len);
}
in.close();
out.close();
}
}
Exception in thread "main" java.lang.NullPointerException
at FileCopy.copyDirectory(FileCopy.java:30)
at FileCopy.main(FileCopy.java:19)
也就是
copyDirectory(dirname1,dirname2);
for(int len=0 ; flist[len]!=null ;len++){ 展开
5个回答
展开全部
空指针是对象空引用 ··比如说 a.close(); 当a是空值是就会报空指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-19
展开全部
打一个断点,debug一下,就知道哪里是空了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
copyFile(flist[len],new File(url2+File.separator+flist[len].getName()));
}else if(flist[len].isDirectory()){
明明上面加了File.separator,下面为什么不加
String dirname1 = url1 + flist[len].getName();
String dirname2 = url2 + flist[len].getName();
}else if(flist[len].isDirectory()){
明明上面加了File.separator,下面为什么不加
String dirname1 = url1 + flist[len].getName();
String dirname2 = url2 + flist[len].getName();
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学习编程我感觉流程很重要:
1将流程打印出来
看看具体走到哪里了 给问题准确定位 首先要找到错 才能解决
2就像楼下所说的调试模式 一步步执行
1将流程打印出来
看看具体走到哪里了 给问题准确定位 首先要找到错 才能解决
2就像楼下所说的调试模式 一步步执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询