`要求是必须使用文件的修订版填充树。
我有一个命令从MKS(版本控制系统)获取特定文件的所有修订版。
在java中使用以下命令
Process p = Runtime.getRuntime().exec("cmd /C "+cmd);
我得到了file.c的所有版本。现在我想将数据填充到Tree结构中。我该怎么做?
try {
List<String> lVersions = new ArrayList<String>();
Process p = Runtime.getRuntime().exec("cmd /C "+cmd);
BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null)
{
lVersions .add(line);
}
}catch (IOException e)
{ e.printStackTrace();
}
lVersions包含以下输出。它显示了特定文件的所有修订版。我需要将此信息填充到Tree结构中。
1.1
1.1.1.1
1.1.1.2
1.1.1.3
1.1.1.4
1.2
1.3
我创建了一个树类
public class Tree {
private List<Tree> children = new ArrayList<Tree>();
private String label;
private Tree parent;
private String root;
public Tree() {
super();
children = new ArrayList<Tree>();
}
public Tree(String label) {
this();
setData(label);
}
public void setRoot(String root){
this.root= root;
}
public String getRoot(){
return root;
}
public void addChild(Tree child) {
child.setParent(this);
children.add(child);
}
public void removeChild(Tree node) {
children.remove(node);
node.setParent(null);
}
public void setParent(Tree parent) {
this.parent = parent;
}
public Object[] getChildren() {
return children.toArray();
}
public Object getParent() {
return parent;
}
public String getLabel() {
return this.label;
}
public void setData(String label) {
this.label = label;
}
}
我必须生成以下树结构,并记住每个节点的父节点。我不是要求代码,但关于如何开始和继续的一些指示将是非常有帮助的!
1.1
1.2 1.1.1.1
1.3 1.1.1.2
1.4 1.1.1.3
1.1.1.4
答案 0 :(得分:0)
您需要阅读命令的输出。请参阅ProcessBuilder
的API,以便将流程输出设为InputStream
(流程输出==您的输入,对吧?)
将输出解析为树节点。每个节点都有一个parent
引用和一个带有子节点的列表children
。