递归方法中的NullPointer(获取常规树路径)

时间:2015-12-08 01:26:24

标签: java

我正在制作一个程序,我已经用文件系统粗略地概述了一般树。我有一个名为movie-info.html的类,我有2个扩展File的类,FileDirectory。在我的TextFile类中,我有一个存储根的变量。我很确定我得到了NullPointerException,因为我的FileSystem课程如何,但我无法弄清楚如何修复它。

这是我的文件类:

FileSystem

这是我的目录类:

public abstract class File {
private String name;
private Directory parent;

public File(String name) {
    this.name = name;
}

Directory getParent() {
    return parent;
}

String getName() {
    return name;
}

void setParent(Directory parent) {
    this.parent = parent;
}

String getPath() {
    return getPath(this);
}

String getPath(File f) {
    if (f == FileSystem.getRoot()) {
        return "";
    } else {
        return getPath(f.parent) + "/" + f.name;
    }
}

}

这是我的FileSystem类:

import java.util.ArrayList;

public class Directory extends File {
private ArrayList<File> children = new ArrayList<File>();

Directory(String name){
    super(name);
}

void addChild(File f){
    setParent(this);
    children.add(f);
}

ArrayList<File> getChildren(){
    return children;
}
}

以下是我在主要方法中尝试做的事情:

public class FileSystem {
static Directory root;

//Constructor
public FileSystem(){

}

//Constructor with parameters
public FileSystem(Directory root){
    this.root = root;
}

public static File getRoot(){
    return root;
}
}

任何有关如何追踪我的路径的帮助将不胜感激。我希望它打印出来://Creating root directory Directory root = new Directory("/"); //Creating FileSystem user will add and remove directories/text files from FileSystem tree = new FileSystem(root); Directory a = new Directory("a"); Directory b = new Directory("b"); Directory c = new Directory("c"); root.addChild(a); a.addChild(b); b.addChild(c); c.getPath();

1 个答案:

答案 0 :(得分:1)

我认为问题可能在于这种方法:

void addChild(File f){
   setParent(this); //seting parent for directory not for file which is passed
   children.add(f);
}

尝试更改为:

f.setParent(this)