再帰的メソッドは、再帰的構造の問題を解決するのに効率的です。前述の例は、再帰を使用しなくても簡単に解決できます。このセクションでは、再帰を使用しないと解決するのが難しい問題を示します。問題は、ディレクトリのサイズを見つけることです。ディレクトリのサイズは、ディレクトリ内のすべてのファイルのサイズの合計です。ディレクトリ d にはサブディレクトリが含まれる場合があります。以下の図に示すように、ディレクトリにファイル f1、f2、...、fm とサブディレクトリ d1、d2、...、dn が含まれているとします。
ディレクトリのサイズは次のように再帰的に定義できます:
サイズ(d) = サイズ(f1) サイズ(f2) ... サイズ(fm) サイズ(d1) サイズ(d2) ... サイズ(dn)
File クラスを使用して、ファイルまたはディレクトリを表し、ファイルとディレクトリのプロパティを取得できます。 File クラスの 2 つのメソッドがこの問題に役立ちます:
以下のコードは、ユーザーにディレクトリまたはファイルの入力を促し、そのサイズを表示するプログラムを提供します。
file オブジェクトがディレクトリを表す場合 (20 行目)、ディレクトリ内の各サブアイテム (ファイルまたはサブディレクトリ) が再帰的に呼び出され、そのサイズが取得されます (23 行目)。 file オブジェクトがファイルを表す場合 (26 行目)、ファイル サイズが取得され、合計サイズに追加されます (27 行目)。
間違ったディレクトリまたは存在しないディレクトリを入力した場合はどうなりますか?プログラムはそれがディレクトリではないことを検出し、file.length() (27 行目) を呼び出します。これは 0 を返します。したがって、この場合、getSize メソッドは 0. を返します。
間違いを避けるために、すべてのケースをテストすることをお勧めします。たとえば、ファイル、空のディレクトリ、存在しないディレクトリ、存在しないファイルの入力についてプログラムをテストする必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3