TCP 経由でディレクトリ ツリー構造を送信しようとしています。ツリーはサブディレクトリにある可能性があります。実際のコンテンツを送信したくはありませんが、多かれ少なかれ、1 つのバイト ストリームでリストを送信します。これを行う最善の方法は何ですか?
3 に答える
ツリーを送信するには、次の手順を再帰的に実行します。
ルートを送信し、次にその子を送信します。
「ベスト」には、シナリオに応じて多くの解釈があります。クライアント(TCPレシーバー)がデータを簡単に利用できる形式を提供できるのであれば、それはおそらく良い考えです。
通常、私は最善を最も理解しやすい方法だと思います。たとえば、XMLはどこにでもあるので、XML表現は良いでしょう-誰もがそれを知っています(またはそうすべきです)。それを処理するCOTSライブラリは100万あり、よく知られています。
XMLは本質的にエンティティに他のエンティティを含めることができ、デフォルトではノード間に親/子があります。そのため、この形式はディレクトリ構造を非常によく反映します。
xmlの欠点は、非常に冗長であるということです。余分な複雑さを処理する場合は、はるかに小さいフラットファイル形式を構築できます(ネットワークアプリケーションではファイルサイズが非常に重要です)。フラットファイル表現を使用する場合は、単一のデータベーステーブル(名前、ファイル/フォルダー、parent_directoryなど)でデータを構造化する方法を検討してください。
効率性(他のソリューションに比べて少数のバイト数を送信する必要があるソリューションを探していることを意味すると仮定します)、読みやすさ、および移植性に対する最善の策は、JSONのようなものだと思います。
{"dir":"/","children":
[{"dir":"bin","children":
[{"file":"bash"},
{"file":"csh"}]
},
{"dir":"home","children":null}]}