我正在尝试构建一个包含以下类的文件系统:FileSystem、Directory、File。
我的代码是:
public class FileSystem {
private List<Directory> ld;
public FileSystem() {
ld = new ArrayList<Directory>();
}
public void addDirectory(Directory dir) {
ld.add(dir);
}
public void showAll() {
for (Directory directory : ld) {
directory.showAll();
}
}
}
public class File {
private String fileName;
public File(String fileName) {
this.fileName = fileName;
}
public String getName() {
return fileName;
}
public void setName(String name) {
this.fileName = fileName;
}
}
public class Directory {
private String directoryName;
private List<File> files;
private List<Directory> subDirs;
public Directory(String directoryName) {
this.directoryName = directoryName;
files = new ArrayList<File>();
subDirs = new ArrayList<Directory>();
}
public String getName() {
return this.directoryName;
}
public void setName(String name) {
this.directoryName = name;
}
// Add and remove files
public void addFile(File file) {
files.add(file);
}
public void removeFile(File file) {
files.remove(file);
}
// Add and remove directories
public void addDirectory(Directory dir) {
subDirs.add(dir);
}
public void removeDirectory(Directory dir) {
subDirs.remove(dir);
}
public void showAll() {
System.out.println(this.directoryName);
for (File f : files) {
System.out.println(" " + f.getName());
}
}
}
public class Create {
public static void main(String[] args) {
FileSystem fs = new FileSystem();
Directory d1 = new Directory("Directory1");
d1.addFile(new File("FileX"));
Directory d11 = new Directory("Directory11");
d11.addFile(new File("File1"));
d11.addFile(new File("File2"));
d1.addDirectory(d11);
fs.addDirectory(d1);
fs.showAll();
}
} 但是,当我试图使用showAll方法打印所有内容时,它只打印'Directory1‘和'FileX',但我想打印:
Directory1
FileX
Directory11
File1
File2
发布于 2022-09-01 08:05:35
您的Directory#showAll应该如下所示:
public void showAll() {
System.out.println(this.directoryName);
for (File f : files) {
System.out.println(" " + f.getName());
}
for(Directory subDir: subDirs){
subDir.showAll();
}
}因此,它也递归地遍历subDirs。
ps.s.-我也会去除FileSystem实体,或者至少引入Directory和FileSystem之间的父子关系。
https://stackoverflow.com/questions/73565925
复制相似问题