1.Java实现的多层目录结构有哪些呢
Node:目录节点,具备节点属性信息 NodeStore:平面目录节点持久化接口,提供方法如下: public List findByType(String type); -- 根据目录类型,获取该类型下所有的节点(平面节点) public void add(T node);--将增加节点持久化 public void update(T node);--将修改节点持久化 public void delete(T node);--删除节点 public void move(T src, T target); --将移动节点持久化 NodeStore是一个接口,可以基于DB实现,也可以基于XML实现,或则其他你需要的方式。
Tree:目录树,主要职责: 通过NodeStore load某一类型目录的所有平面节点,build成树; 根据节点id号,查找相应的节点信息 动态新增,修改,删除,移动节点,通过NodeStore将变化持久化; 目录结构实现类图:(目前只实现了读方法) 附上Node,Tree类的核心代码 Node。 java 1 public class Node implements Serializable, Comparable { 2 3 private static final long serialVersionUID = 8085266615416399579L; 4 5 private Integer id; // id号 6 private Integer parentId;// 父亲id号 7 private String name;// 目录名 8 private String description;// 目录描述 9 private String type;// 目录类型 10 11 private Node parent;// 父亲 12 private List children;// 儿子 13 14 /** 15 * 添加子节点,并且建立与当前节点的父子关系 16 * 17 * @param child 儿子节点 18 */ 19 public void addChild(Node child) { 20 if (child == null) { 21 return; 22 } 23 // 设置当前节点为child的父节点 24 child。
setParent(this); 25 // 当前节点增加child为儿子节点 26 if (getChildren() == null) { 27 setChildren(new ArrayList()); 28 } 29 getChildren()。 add(child); 30 } 31 32 /** 33 * 删除子节点,并且建立与当前节点的父子关系 34 * 35 * @param child 儿子节点 36 */ 37 public void removeChild(Node child) { 38 if (child == null) { 39 return; 40 } 41 // 将child节点的父节点清空 42 child。
setParent(null); 43 if (getChildren() == null) { 44 return; 45 } 46 // 当前节点删除child这个儿子节点 47 getChildren()。remove(child); 48 } 49 50 /** 51 * 得到全路径 52 * 53 * @param sep 分隔符号 54 * @return 55 */。
2.要将指定路径中的目录结构写入到一个文本文件中,怎么做
很高兴回答你的问题,根据你的需求,我刚写了段代码(执行没有问题),可能比较简单,但是你要的功能(遍历子目录,写入指定文件)都以实现:
package file;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class TestFiles {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args){
String mbfile = "D:\\file.txt"; //写入目录结构的目标文件
File file = new File("D:\\test");//需要读取目录
OutputStream streamOut = null;
try {
streamOut = new FileOutputStream(mbfile);
serach(file, true,streamOut);
streamOut.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(streamOut!=null)
//关闭流
streamOut.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 遍历目录及子目录
* @param file
* @param isdepth 是否遍历子目录
* @param streamOut
* @throws IOException
*/
public static void serach(File file,boolean isdepth, OutputStream streamOut) throws IOException{
File[] files = file.listFiles();
File temp = null;
for(int i=0;i<files.length;i++){
temp = files[i];
if(temp.isDirectory()&& isdepth){
serach(temp,true,streamOut);
}
System.out.println(temp.getAbsolutePath());
streamOut.write((temp.getAbsolutePath()+"\r\n").getBytes());// 追加\r\n是代表换行
}
}
}
如有问题,请Hi我!祝学习愉快!
3.用java写一个代码实现: 如何列出某个目录下的所有子目录
/** * 列出文件夹下的子文件夹名 * @param localRoot * @throws content */ public static void list(String localRoot) throws Exception { File[] fs = new File(localRoot).listFiles(); if ((fs == null) || (fs.length <= 0)) { System.out.println("空文件夹"); return; } for (File f : fs) { if (f.isDirectory()) { System.out.println("目录:"+ f.getName()); } } }建立个class然后见个main方法调用一下就可以了。
4.我是java初学者,拿到一个做好的java项目代码,我该如何分析这个代
1、拿到代码查看项目当中是否有readme这样的文件,如果没有查看是否有文档之类的
2、代码当中没有文档,那么就想你的同事或者其他人要这个框架的介绍或者资料
3、先请教别人这个框架的大体思路
4、自己独立去按照文档或者其他人说的思路去看代码
5、不懂的地方全部记录下面,一次行去问,有的时候很多问题在你看到后面的东西的时候就自然明白了
6、看懂了代码之后自己尝试着写一个,看自己的理解是否正确就这么多了。