我已经定义了一个copyFile(File file,File saveDir),能成功地复制文件,现在我想要复制一个文件,我想把这个文件夹下的所有文件和文件夹用文件列表形式表示,如果遇到文件就调用copyFile()函数复制,如果遇到文件夹调用它本身复制,但是复制时候出现异常:
显示:
输入文件所在路径:c:/film
文件路径:c://film
您输入的是一个目录...
输入要保存路径:d:/
c:/film下有2个文件
c:/film/f下有2个文件
正在复制文件: Thumbs.db 请稍后...
Exception in thread "main" java.lang.NullPointerException
at bag.Copy.findName2(Copy.java:78)
at bag.Copy.copyFile(Copy.java:104)
at bag.Copy.copyFile2(Copy.java:168)
at bag.Copy.copyFile2(Copy.java:171)
at bag.Copy.main(Copy.java:207)
/**************************************************************************
copyFile2() 复制文件夹方法
**************************************************************************/
static void copyFile2(File oldDir,File newDir)
{
//oldDir 要复制文件夹
//newDir 存放路径
//在nesDir文件夹下创建一个oldDir文件夹
String strOldDir=oldDir.getName().toString();
//oldDir转化为字符串strOldDir
String strNewDir=newDir.toString();
//newDir转化为字符串strNewDir
tring endDir=run(strNewDir+oldDir.getName()).trim();
//run是自己定义函数,转化路径,如 c:/film转化为c://film以便java识别
//endDir:在目的路径下建立一个文件夹
File newSonFile = new File(endDir);
File oldFiles[]=oldDir.listFiles();
if(oldFiles!=null)
{
System.out.println(oldDir+"下有"+oldFiles.length+"个文件");
for(int i=0;i<oldFiles.length;i++)
{
//如果是文件则调用复制函数
if(oldFiles[i].isFile())
copyFile(oldFiles[i],newSonFile);
//如果是文件夹继续调用复制文件夹函数
else
copyFile2(oldFiles[i],newSonFile);
}
}
}
为什么?高手能帮我解决一下吗?多谢了.