A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhanghua 黑马帝   /  2011-11-15 08:49  /  2194 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.List;
import java.util.ArrayList;
import java.io.*;

//抽象类
abstract class AbstractFile {
protected String Name;

public void printName(){
System.out.println(Name);
}
public abstract boolean addChild(AbstractFile file);
public abstract boolean removeChild(AbstractFile file);
public abstract List<AbstractFile> getChildren();
}

//文件夹类
class Folder extends AbstractFile {
private List<AbstractFile> childList;
File f1 ;

public Folder(String name){
Name = name;
f1 = new File(Name);
if(f1.mkdir()){
System.out.println("目录创建成功了。");
}
this.childList = new ArrayList<AbstractFile>();
}

public boolean addChild(AbstractFile file){
return childList.add(file);
}
public boolean removeChild(AbstractFile file){
return childList.remove(file);
}
public List<AbstractFile> getChildren(){
return childList;
}
}

//文件类
class File2 extends AbstractFile {
File f2 ;
public File2(String name){
Name = name;

f2 = new File(Name);
if(f2.mkdir()){
System.out.println("目录创建成功了222。");
}
}
public boolean addChild(AbstractFile file){
return false ;
}
public boolean removeChild(AbstractFile file){
return false ;
}
public List<AbstractFile> getChildren(){
return null;
}
}

//测试类
public class Client {
   //主方法
public static void main(String[] args) {
AbstractFile rootFolder = new Folder("C:/Test");
AbstractFile compositeFolder = new Folder("composite");
AbstractFile compositeFolder2 = new Folder("composite2");//
AbstractFile windowFolder = new Folder("windows");
AbstractFile file = new File2("TestComposite.java");

rootFolder.addChild(compositeFolder);
rootFolder.addChild(windowFolder);

compositeFolder.addChild(compositeFolder2);//
compositeFolder.addChild(file);
PrintTree(rootFolder);
}

//构建文件目录树方法
public static void PrintTree(AbstractFile ifile){
ifile.printName();
List<AbstractFile> children = ifile.getChildren();
if(children == null){
return ;
}

for(AbstractFile file2:children){
//file2.printName();
//递归调用,实现对文件子目录的打印
PrintTree(file2);
}
}

}

1 个回复

倒序浏览
别一上来就把一堆代码贴上来,你有什么疑问也没说?这个知识点造成的疑问或不懂的地方总是那么几个!  你也没说你哪不懂,作答者从何说起?  我觉得最好的答案就是重新看几遍视频吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马