黑马程序员技术交流社区

标题: 为什么运行时会提示 空指针异常???? [打印本页]

作者: 王卿    时间: 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