import java.io.*;
public class Test3 {
public static void main(String args[]) {
String separator = File.separator;
String filename1 = "myfile1.txt";
String filename2 = "myfile2.txt";
String filename3 = "myfile3.txt";
String filename4 = "myfile4.txt";
String directory1 = "A" +separator + "B";
String directory2 = "A" +separator + "C";
String directory3 = "A" +separator + "B" + separator + "D";
String directory4 = "A" +separator + "B" + separator + "D"+ separator + "E";
File f1 = new File(directory1,filename1);
File f2 = new File(directory2,filename2);
File f3 = new File(directory3,filename3);
File f4 = new File(directory4,filename4);
isExist(f1);
isExist(f2);
isExist(f3);
isExist(f4);
File f = new File("d:/java/FrequentlyUsedClassers/A");
printTree(f,0);

} public static void isExist(File f) {
if(f.exists()) {
System.out.println("文件名" + f.getAbsolutePath());
System.out.println("文件大小" + f.length());
}else {
f.getParentFile().mkdirs();
try {
f.createNewFile();
}catch(IOException e) {
e.printStackTrace();
}
}
} public static void printTree(File f,int level) {
String preStr = "";
for(int i=0; i<level; i++) {
preStr += "  ";
}
File[] a = f.listFiles();
for(int i=0; i < a.length; i++) {
System.out.println(a[i].getName());
if(a[i].isDirectory()) {
printTree(a[i],level + 1);
}
}
}
}
报错nullpointerexception

解决方案 »

  1.   

    for(int i=0; i < a.length; i++) 
    问题出在这一行上
      

  2.   

    String directory1 = "A" +separator + "B";
    由于你上面的这个目录是这样的 所以File f1 = new File(directory1,filename1); 生成的目录是在你工程之下的
      

  3.   

    String directory1 = "d:/java/FrequentlyUsedClassers/A" +separator + "B";
    String directory2 = "d:/java/FrequentlyUsedClassers/A" +separator + "C";
    String directory3 = "d:/java/FrequentlyUsedClassers/A" +separator + "B" + separator + "D";
    String directory4 = "d:/java/FrequentlyUsedClassers/A" +separator + "B" + separator + "D"+ separator + "E";
    File f1 = new File(directory1,filename1);
    File f2 = new File(directory2,filename2);
    File f3 = new File(directory3,filename3);
    File f4 = new File(directory4,filename4);
    这样就好了!
      

  4.   

    package a;import java.io.*;public class Test3 {
    public static void main(String args[]) {
    String separator = File.separator;
    String basePath = "d:" + separator +"java"+ separator  ; //需要指明每个目录在那个磁盘上啊 
    String filename1 = "myfile1.txt";
    String filename2 = "myfile2.txt";
    String filename3 = "myfile3.txt";
    String filename4 = "myfile4.txt";
    String directory1 = basePath + "A" + separator + "B";
    String directory2 = basePath + "A" + separator + "C";
    String directory3 = basePath + "A" + separator + "B" + separator + "D";
    String directory4 = basePath + "A" + separator + "B" + separator + "D" + separator
    + "E";
    File f1 = new File(directory1, filename1);
    File f2 = new File(directory2, filename2);
    File f3 = new File(directory3, filename3);
    File f4 = new File(directory4, filename4);
    isExist(f1);
    isExist(f2);
    isExist(f3);
    isExist(f4);
    File f = new File(basePath);
    // isExist(f);
    printTree(f, 0); } public static void isExist(File f) {
    if(f.isDirectory() && !f.exists()){
    f.mkdirs() ; 
    }else{
    if (f.exists()) {
    System.out.print("文件名" + f.getAbsolutePath());
    System.out.println("   文件大小" + f.length());
    } else {
    f.getParentFile().mkdirs();
    try {
    // System.out.println( "-------------"+f.getAbsolutePath())  ;
    f.createNewFile();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    } public static void printTree(File f, int level) {
    String preStr = "";
    for (int i = 0; i < level; i++) {
    preStr += " ";
    }
    File[] a = f.listFiles();
    for (int i = 0; i < a.length; i++) {
    System.out.println(a[i].getName());
    if (a[i].isDirectory()) {
    printTree(a[i], level + 1);
    }
    }
    }
    }
    文件名d:\java\A\B\myfile1.txt   文件大小0
    文件名d:\java\A\C\myfile2.txt   文件大小0
    文件名d:\java\A\B\D\myfile3.txt   文件大小0
    文件名d:\java\A\B\D\E\myfile4.txt   文件大小0
    A
    B
    D
    E
    myfile4.txt
    myfile3.txt
    myfile1.txt
    C
    myfile2.txt