我正在制作一个程序,我已经用文件系统粗略地概述了一般树。我有一个名为movie-info.html
的类,我有2个扩展File的类,File
和Directory
。在我的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();
答案 0 :(得分:1)
我认为问题可能在于这种方法:
void addChild(File f){
setParent(this); //seting parent for directory not for file which is passed
children.add(f);
}
尝试更改为:
f.setParent(this)