2016-06-19 9 views
0

私のプログラムでは、すべてのファイルのフォルダ数と合計サイズ(バイト数)をカウントして表示しますが、エラーが発生します(「スレッド内の例外」メインの「java.lang.NullPointerException」)エラーJava IOフォルダの合計サイズ

import java.io.*; 
public class Ex5 { 
    public static void a(String s) throws IOException{ 

     long size=0; 
     File f=new File(s); 
     File [] a=f.listFiles(); 
     System.out.println("the number of files in this folder :"+a.length); 
     for(int i=0;i<a.length;i++){ 
     if(a[i].isFile()){ 
      size=size+a[i].length(); 

     }else 
      a(a[i].getName()); 

     } 
    System.out.println("the folder size is :"+size); 
    } 
    public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 
     a("C:\\Users\\hackour\\Documents\\javablue\\applet"); 
    } 

} 

答えて

0

File[] a = f.listFiles()は、常にnull以外の値になります。これは空のディレクトリやファイルには当てはまりません。最初のプログラムは、フォルダアプレットの合計サイズファインプリントである

... 
    File[] a = f.listFiles(); 
    if(a != null) { 
     System.out.println("the number of files in this folder :" + a.length); 
     for (int i = 0; i < a.length; i++) { 
      if (a[i].isFile()) { 
       size = size + a[i].length(); 

      } else 
       a(a[i].getName()); 

     } 
    } 
    System.out.println("the folder size is :" + size); 
    ... 
+0

しかし、私は、フォルダ内に新しいフォルダをレコード生成時にプログラムがこのエラー を行うアプレット、私があれば入れて(A:のように、この条件のために、いくつかのガードコードを追加してみてください!= null) しかし、プログラムはサブフォルダのサイズを持つフォルダの合計サイズを表示しません thx for help 注:(最初にアプレットフォルダにはファイルしかありません) – hackour

+0

問題はa ] .getName()); サイズ+ = a(a [i] .getname());でなければなりません。 – hackour