首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

读取文件半生不熟成目录树

2012-10-08 
读取文件夹生成目录树// modelimport java.util.Setpublic class Node {// 标识符private int id// 节点

读取文件夹生成目录树

// modelimport java.util.Set;public class Node {// 标识符private int id;// 节点名称private String name;// 层次private int level;// 是否叶子节点private boolean leaf;// 父节点 * --- 1private Node parent; // 一的一端// 子节点 1 --- *private Set<Node> children; //  多的一端public int getId() {return id;}public void setId(int id) {this.id = id;}public boolean isLeaf() {return leaf;}public void setLeaf(boolean leaf) {this.leaf = leaf;}public int getLevel() {return level;}public void setLevel(int level) {this.level = level;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Node getParent() {return parent;}public void setParent(Node parent) {this.parent = parent;}public void setChildren(Set<Node> children) {this.children = children;}public Set<Node> getChildren() {return children;}}
// Node.hbm.xml<hibernate-mapping>    <class name="com.bjsxt.hibernate.Node" table="t_node">        <id name="id">            <generator column="pid"/>        <set name="children" lazy="extra" inverse="true">        <key column="pid"/>        <one-to-many name="code">import junit.framework.TestCase;public class NodeManagerTest extends TestCase {public void testCreateTree() {NodeManager.getInstance().createTree("D:\\hibernate_basemapping\");}   public void testPrintTree() {NodeManager.getInstance().printTree(1);}}import java.io.File;import java.util.Iterator;import java.util.Set;import org.hibernate.Session;public class NodeManager {private static NodeManager nodeManager;private NodeManager() {} public static synchronized NodeManager getInstance() {if (nodeManager == null) {nodeManager = new NodeManager();}return nodeManager;}// 创建树型结构public void createTree(String dir) {Session session = HibernateUtils.getSession();try {session.beginTransaction();File root = new File(dir); // 创建文件目录saveTree(root, session, null, 0);session.getTransaction().commit();} catch (RuntimeException e) {e.printStackTrace();session.getTransaction().rollback();} finally {HibernateUtils.closeSession(session);}}// 递归创建一棵树private void saveTree(File file, Session session, Node parent, int level) {if (file == null || !file.exists()) {return;}boolean isLeaf = file.isFile();Node node = new Node();node.setName(file.getName());node.setLevel(level);node.setParent(parent);node.setLeaf(isLeaf);session.save(node);File[] subs = file.listFiles();if (subs != null && subs.length > 0) {for (int i = 0; i < subs.length; i++) {saveTree(subs[i], session, node, level + 1);}}}public void printTree(int id) {Session session = HibernateUtils.getSession();try {session.beginTransaction();Node root = (Node) session.load(Node.class, id);printNode(root);session.getTransaction().commit();} catch (RuntimeException e) {e.printStackTrace();session.getTransaction().rollback();} finally {HibernateUtils.closeSession(session);}}private void printNode(Node node) {if (node == null) {return;}int level = node.getLevel();if (level > 0) {for (int i = 0; i < level; i++) {System.out.print("  |");}System.out.print("--");}System.out.println(node.getName()+ (node.isLeaf() ? "" : "[" + node.getChildren().size() + "]"));Set<Node> children = node.getChildren();for (Iterator<Node> iter = children.iterator(); iter.hasNext();) {Node child = iter.next();printNode(child);}}}

热点排行