-3

`要件は、ツリーにファイルのリビジョンを入力する必要があることです。

MKS(バージョニングシステム)から特定のファイルのすべてのリビジョンをフェッチするコマンドがあります。

Javaで次のコマンドを使用する

Process p = Runtime.getRuntime().exec("cmd /C "+cmd);

file.cのすべてのバージョンを取得します。ここで、データをツリー構造に入力します。それ、どうやったら出来るの?

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には次の出力が含まれています。特定のファイルのすべてのリビジョンが表示されます。この情報をツリー構造に入力する必要があります。

1.1
1.1.1.1
1.1.1.2
1.1.1.3
1.1.1.4
1.2
1.3  

ツリークラスを作成しました

パブリッククラスツリー{

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
4

1 に答える 1

0

コマンドの出力を読み取る必要があります。ProcessBuilderプロセスの出力を取得するためのAPIを参照してくださいInputStream(プロセスの出力==入力ですよね?)

出力をツリーノードに解析します。各ノードには、参照と子ノードparentのリストがあります。children

于 2012-10-12T12:18:33.793 に答える