【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

C#で作成しています。FTPで接続してlocalhostから下をツリー表示にして全て表示させたいのですが上手い方法が思いつきません。

System.Net.FtpWebRequest ftpReq = (System.Net.FtpWebRequest)
System.Net.WebRequest.Create("ftp://localhost");
ftpReq.Credentials = new System.Net.NetworkCredential("username", "password");
ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails;
System.Net.FtpWebResponse ftpRes =
(System.Net.FtpWebResponse)ftpReq.GetResponse();
System.IO.StreamReader sr =
new System.IO.StreamReader(ftpRes.GetResponseStream());
string res = sr.ReadToEnd();
System.IO.StringReader rs = new System.IO.StringReader(res);

while (rs.Peek() > -1)
{
treeView1.Nodes.Add(rs.ReadLine());
}

rs.Close();

これで親ノードのみはできましたが、この後の子ノードの取得方法が分かりません。
良い方法をご存じの方ご宜しくお願いします。

A 回答 (1件)

作成されているのはFTPクライアントソフトでしょうか?




FTPコマンド自体は、カレントのディレクトリしかファイル一覧を取得することが出来ません。
そのため、ツリー構造で表示したい場合には、逐一カレントディレクトリを動かしてはファイル一覧を取得して
その中にサブディレクトリがあったらそのディレクトリを調査して・・・と繰り返す必要があります。

ツリー構造を把握するためには、リスト構造かなにかでディレクトリ構造を保持することと
深さ優先探索で探索木(ディレクトリ構造)を片っ端から調べるしかありません。


データ構造とアルゴリズムについて調べれば、おそらくC言語での実装に関する解説はたくさん見つかるはずです。
それを元にどういうデータ構造でどういった挙動のプログラムになっているのかを理解されたうえで
C#で実装することと、ディレクトリ構造に向けて最適化した探索木の構造を考えてみてください。


ディレクトリ構造を把握するだけなら、効率はいまいち悪いかもしれませんが
個々のツリーのノードをなすリストの構造に工夫すれば二分木で一応保持可能です。
ディレクトリ部分だけではなく、各ディレクトリ内のファイル名も含めて可能なはずです。

# C言語では昔やったのですが、C#は弄ったことがないもので・・・ すみません。
    • good
    • 0
この回答へのお礼

ありがとうございます。参考になりました。

お礼日時:2011/05/18 19:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!