2014-11-05 67 views
-1

在for循环中,根据条件是否存在,每次都需要创建文件。执行代码时,弹出NullPointerException空指针在创建文件阵列时出现异常

File[] tempDir=null; 
    for() 
    { 
    if(condition){ 
     try { 
      tempDir[l]=new File(tempFileName); 
      if(l==0){ 
       tempDir[l++].mkdir(); 
       /*code*/ 
      } 
      if (!tempDir[l].exists()){ 
       tempDir[l++].mkdir(); 
       /*code*/ 
      } 
     } 
    } 

回答

2

您不初始化tempDir数组。

变化

File[] tempDir=null; 

File[] tempDir=new File[somePositiveInteger]; 

tempDir[l]会抛出一个NullPointerException如果tempDir为null。

+0

public static void copyFileContents(File source,File dest)throws IOException {....}尝试{tempDir [l] = new File(tempFileName); if(l == 0){ \t \t \t \t \t \t tempDir [l ++]。mkdir(); \t \t \t \t \t \t \t copyFileContents(新文件( “d:\\ \\戈库尔自动” “TXT ”+ “\\” +文件名+),新的文件(“ d:\\ \\戈库尔目的地” + “\\” + tempFileName + “\\” +文件名+))名为 “txt”。; \t}/*显示空指针异常* / – 2014-11-05 06:44:47

0

要初始化您的文件数组来这里空,

File[] tempDir=null; 

所以你得到NPE,当你正在努力寻找文件阵列在这里的第一个元素

tempDir[l]=new File(tempFileName); // tempDir[l] represents the element at position 1 

所以你应该声明这个数组的大小,正如Eran在他的回答中指出的那样。也可以看看How to initialize an array in Java?