ホームページ >バックエンド開発 >Golang >空のフォルダーのみを含むフォルダーをツリーからクリアします

空のフォルダーのみを含むフォルダーをツリーからクリアします

WBOY
WBOY転載
2024-02-09 09:54:101208ブラウズ

空のフォルダーのみを含むフォルダーをツリーからクリアします

php エディタ Xiaoxin は、フォルダー操作に関するちょっとしたトリック、つまり空のフォルダーのみを含むフォルダーをツリーから削除する方法を紹介します。日常のファイル管理では、空のフォルダーのみが含まれるフォルダーが発生することがあります。これらのフォルダーはストレージ領域を占有しますが、実際のコンテンツは含まれていません。次の簡単な操作により、これらの空のフォルダーを簡単にクリアし、貴重なストレージ領域を解放し、ファイル管理の効率を向上させることができます。

質問内容

あります

リーリー

このスライスをモデルにしたディレクトリ構造があります。このディレクトリには複数のレベルのフォルダー構造があり、最終的にはファイルが存在しない可能性があります。またね### リーリー

空のフォルダーのみを含むフォルダーをクリーンアップしたいと考えています。したがって、この例では、folder1 には 1 つのファイルだけが残り、それ以下のファイルはすべて削除されます。 しかし、これを行うための良いアイデアが思いつかないようです。元のツリーを変更せずに新しいツリーを完全に作成することはできますが、ツリーを効率的に反復処理して最後の子に子がないかどうかを確認し、ルートに戻ってその子を削除する方法がわかりません。空のフォルダーリスト。 あらゆるアイデアを歓迎します。

私の最初の解決策では、リーフのみが削除され、親フォルダーは削除されません:

type node struct {
   id       string
   children []node
}

回避策

まず良い質問ですが、他の人があなたのユースケースを再現するのは難しいでしょう。次回からは、人々が使用してメソッドをすぐにテストして結果が得られる、再現可能なコードを追加するようにしてください。ルートを渡したように見えますが、それを初期化するにはどうすればよいですか?誰かがあなたを助けてくれる必要がある場合は、まず関係を築く必要があります。一般的に言って、これは不便です。それにもかかわらず、解決策を見てみましょう。

ディレクトリ構造

ディレクトリを入力してください リーリー

期待される結果 リーリー

ノード定義

まず第一に、ディレクトリツリーをどのように作成するのかわかりません。ハードコードされている場合は別の質問になりますが、通常、

n-ary ツリーにデータを設定する方法では、自己参照ポインターを使用して node を定義する必要があります。正確なスライスではありません。したがって、次のようにノードを定義します リーリー

補助メソッド

これは、パスがディレクトリを指しているかどうかを確認するヘルパー メソッドです

リーリー

ツリーにデータを追加する方法

これは、

queue 入力 n 分ツリー を使用した単純な反復方法です。 Golang はキューの実装を提供しませんが、Golang チャネルは実際には単なるキューです。 golang では動的なバッファリングされたチャネルを作成できないため、500 のままにしました。私見ですが、この数値はほぼすべてのシナリオで機能するはずです。 リーリー

別の補助的な方法

これはディレクトリ ツリーを出力するだけです。デバッグ目的のみ。

リーリー

最後に解決策です。

とてもシンプルです。ご質問がございましたら、お知らせください。

リーリー

ここに

main() リーリー

以上が空のフォルダーのみを含むフォルダーをツリーからクリアしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。