黑马程序员技术交流社区
标题:
为什么运行时会提示 空指针异常????
[打印本页]
作者:
王卿
时间:
2011-7-19 10:18
标题:
为什么运行时会提示 空指针异常????
为什么这里会出错???
“Exception in thread "main" java.lang.NullPointerException
”
import java.io.*;
import java.util.*;
class CopyFile
{
String newFileDir; //新的路径
String srcFileDir; //原来的目录
String desFileDir; //新的目录
File srcFile;
CopyFile( String srcFileDir,String desFileDir )
{
this.srcFileDir=srcFileDir;
this.desFileDir=desFileDir;
srcFile=new File(srcFileDir);
}
public void start( ) throws Exception
{
getList( srcFile );
System.out.println( "d" );
}
private void getList( File f ) throws Exception
{
File fileList[]=f.listFiles();
for( int i=0; i<fileList.length; i++ )
{
if( fileList
.isDirectory() )
{
copyDirectory( fileList
);
getList( fileList
) ;
}
else
{
copyFile( fileList
);
}
}
}
private void copyDirectory( File f )
{
File desDirectory=new File( replacePath(f));
if( !(desDirectory.exists()))
{
desDirectory.mkdir();
}
//System.out.println( desDirectory.getAbsolutePath() );
}
private void copyFile( File f ) throws Exception
{
FileOutputStream fos=
new FileOutputStream( f );
File newFile=new File( replacePath(f ));
newFile.createNewFile();
FileInputStream fis=
new FileInputStream( newFile );
byte buf[]=new byte[1024];
int num=0;
while( (num=fis.read(buf))!=-1 )
{
fos.write(buf,0,num);
}
fos.close();
fis.close();
//System.out.println( replacePath(f ) );
}
private String replacePath( File f )
{
String s=f.getAbsolutePath();
System.out.println( s );
s=s.replace( srcFileDir,desFileDir );
System.out.println( desFileDir );
System.out.println( srcFileDir );
System.out.println( s );
System.out.println( " " );
return s;
}
}
class Demo
{
public static void main(String args[]) throws Exception
{
new CopyFile( "E:\\zjs\\day22","D:\\zjs").start();
}
}
[
本帖最后由 gdky005 于 2011-07-19 10:47 编辑
]
作者:
匿名
时间:
2011-7-19 10:43
getList()中if语句中把数组当成变量实用了;
listFiles()方法,当传进来的不是一个目录时,返回值为null;应该先检查是否为目录;
作者:
匿名
时间:
2011-7-19 10:48
应该怎么解决呢?
作者:
匿名
时间:
2011-7-19 12:08
[code=java]for( int i=0; i<fileList.length; i++ )
{
if( fileList.isDirectory() )
{
copyDirectory( fileList );
getList( fileList ) ;
}
else
{
copyFile( fileList );
}
} [/code][code=java] copyDirectory( fileList );
getList( fileList ) ; [/code]里面fileList是数组的引用 你没确定传的是确定的路径
改下fileList[i]试试
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2