1:第一层1
2: 第二层1
3: 第三层1
4: 第四层1
5: 第四层2
6: 第三层2
7: 第三层3
8: 第二层2
9:第一层2
10: 第二层1上面这些串,空白部分是用Tab键,
前面是每一行的ID号,要求子节点能得到父节点的ID号
结查要求如下1:0第一层1
2:1 第二层1
3:2 第三层1
4:3 第四层1
5:3 第四层2
6:2 第三层2
7:2 第三层3
8:1 第二层2
9:0第一层2
10:1 第二层1

解决方案 »

  1.   

    思路:
    1、定义个类
       存储ID号、名称、父节点的ID号三个属性
    2、将每一行分别存储到一个数组里面
    3、分析数组里的每一个元素
       <1、有多少个Tab?
       <2、取出ID号
       <3、查询其父ID需要一个数组来存储结构
    就是每分析一行数据的时候,将其Tab的个数取出来,Tab的个数就代表了该行的层次(N),那么就将该行的信息对象的引用存储到objArray(N)
    并且根据当前行的层次减一,可以取得其父节点的属性对象objArray(N-1)
      

  2.   

    参考这个吧public static void listFolder(File rootFolder,int c)
    {
    if(!rootFolder.isDirectory())
    {
    System.out.println(rootFolder.getName() + " is not a directory!");
    }
    else
    {
    File dirList[] = rootFolder.listFiles();
    for(int i=0;i<dirList.length;i++)
    {
    for(int j=0;j<=c;j++)
    {
    System.out.print("      ");
    }
    if(dirList[i].isDirectory())
    {
    System.out.println("<"+dirList[i].getName()+">");
    c++;
    listFolder(dirList[i],c);
    c--;
    }
    else if(dirList[i].isFile())
    {
    System.out.println(dirList[i].getName());
    }
    }     
    }
    }
      

  3.   

    搞定了。谢谢,仅仅支持四层
    package com.hehe;import java.util.*;
    import java.io.*;public class DoParse {
      private File objFile = null; //文件对象
      private FileReader objFileReader = null; //读文件对象
      private BufferedReader br = null; //建立BufferedReader对象  public DoParse() {
      }  /**
       * 加载给定文件名的内容,如果文件不可加载返回null。
       * @param filename 文件名
       * @return 文件内容
       */
      public List loadFile(String filename) {
        List ResultData = new ArrayList();
        objFile = new File(filename);
        try {
          objFileReader = new FileReader(objFile);
          br = new BufferedReader(objFileReader);
          String Line = br.readLine();
          while (Line != null) {
            ResultData.add(Line);
            Line = br.readLine();
          }
        }
        catch (IOException ex) {
          ex.printStackTrace();
        }finally{
          try {
            br.close();
            objFileReader.close();
          }
          catch (IOException ex) {
            ex.printStackTrace();
          }
        }
        return ResultData;
      }  public void startParse(String filename){
        List result = loadFile(filename);
        if (result != null && result.size() > 0) {
          long id = 1;
          long[] parentid = {0,0,0,0};
          Iterator iter = result.iterator();
          while (iter.hasNext()) {
            String item = (String) iter.next();
            if(item.startsWith("\t\t\t")){
              //fourth
              System.out.println(id + ":" + parentid[2] + ":" + item);
              parentid[3] = id;
            }else if(item.startsWith("\t\t")){
              //third
              System.out.println(id + ":" + parentid[1] + ":" + item);
              parentid[2] = id;
            }else if(item.startsWith("\t")){
              //second
              System.out.println(id + ":" + parentid[0] + ":" + item);
              parentid[1] = id;
            }else{
              //first
              System.out.println(id + ":" + 0 + ":" + item);
              parentid[0] = id;
            }        id++;
          }
        }
      }  public static void main(String[] args) {
        DoParse dp = new DoParse();
        dp.startParse("D:\\java\\FileImport\\chen.txt");
      }
    }
    chen.txt
    第一层1
    第二层1
    第三层1
    第四层1
    第四层2
    第三层2
    第三层3
    第二层2
    第一层2
    第二层1