标签:
/* * 文件节点抽象(是文件和目录的父类) */ public interface IFile { //显示文件或者文件夹的名称 public void display(); //添加 public boolean add(IFile file); //移除 public boolean remove(IFile file); //获得子节点 public List<IFile> getChild(); }
IFile实现类:文件夹类Folder.java,容器对象,里面可添加文件,删除文件;
import java.util.ArrayList; import java.util.List; /** * 文件夹类 * @author soyoungboy * */ public class Folder implements IFile{ private String name; private List<IFile> children; public Folder(String name) { this.name = name; children = new ArrayList<IFile>(); } /** * 显示文件夹名称 */ public void display() { System.out.println(name); } /** * 文件夹下可能有文件,故显示 */ public List<IFile> getChild() { return children; } /** * 文件夹下面添加文件 */ public boolean add(IFile file) { return children.add(file); } /** * 文件夹下面删除文件 */ public boolean remove(IFile file) { return children.remove(file); } }
import java.util.List; /** * 文件类,无子节点,故无getChild返回内容,文件下不可条件文件,不可删除文件,故add,remove为false * @author soyoungboy * */ public class File implements IFile { private String name; public File(String name) { this.name = name; } /** * 文件显示 */ public void display() { System.out.println(name); } /** * 文件下面没有文件 */ public List<IFile> getChild() { return null; } /** * 添加文件 */ public boolean add(IFile file) { return false; } /** * 删除文件 */ public boolean remove(IFile file) { return false; } }
import java.util.List; public class MainClass { public static void main(String[] args) { //C盘 Folder rootFolder = new Folder("C:"); //first目录 Folder firstFolder = new Folder("first"); //first.txt文件 File firstFile = new File("first.txt"); rootFolder.add(firstFolder); rootFolder.add(firstFile); //second目录 Folder secondFolder = new Folder("second"); File secondFile = new File("second.txt"); //添加二级目录 firstFolder.add(secondFolder); //二级目录中添加文件second.txt firstFolder.add(secondFile); Folder thirdFolder = new Folder("third"); File thirdFile = new File("third.txt"); //添加三级目录 secondFolder.add(thirdFolder); //添加三级文件third.txt secondFolder.add(thirdFile); displayTree(rootFolder,0); } public static void displayTree(IFile rootFolder, int deep) { for(int i = 0; i < deep; i++) { System.out.print("--"); } //显示自身的名称 rootFolder.display(); //获得子树 List<IFile> children = rootFolder.getChild(); //遍历子树 for(IFile file : children) { //如果是文件的话 if(file instanceof File) { for(int i = 0; i <= deep; i++) { System.out.print("--"); } //直接调用display操作 file.display(); } else { //如果是目录的话,递归操作 displayTree(file,deep + 1); } } } }
标签:
原文地址:http://www.cnblogs.com/androidsuperman/p/4859720.html