最近、ハードドライブがひどくいっぱいになるという問題に遭遇しましたが、個人ファイルを調べてサイズの大きいビデオファイルをすべて削除/移動した後でも、利用可能な ROM の量はまだかなり少ないです。そこで、プログラマーの頭脳を働かせて、各フォルダーとサブフォルダーを自分で細心の注意を払って調べ、Windows の右クリック + プロパティ機能を使用して、ファイルの大きさと保持する価値があるかどうかを確認する代わりに、次のことができると判断しました。コンピューター上のすべてのファイルを検索し、フル パス名でリストに入れ、ファイル サイズをそのすぐ隣に配置し、ファイル サイズの大きいものから小さいものへと並べ替える簡単なコードを作成します。それで私はオンラインに飛び乗って調査を始めました、そしてそれはすべてが私のためにファンを襲ったときです. 私' 指定されたタスクで機能するコード スニペットがたくさん見つかりましたが、それらを自分で使用しようとすると、大量のビルド エラーが発生します。とはいえ、これまでに見つけた最も有望なことは次のとおりです。
const string dir = "C:\\";
string[] fns = Directory.GetFiles(dir);
var Sort = from fn in fns
orderby new FileInfo(fn).Length descending
select fn;
foreach (string n in Sort)
Console.WriteLine(n);
残念ながら、これはサブディレクトリには触れません。サブディレクトリからファイルを取得する方法を調べてみましたが、これらのコード スニペットをこのコードに統合しようとすると、想像以上に面倒でした。トンネルの終わりに光が見えるというまれな機会に、私のプログラムは、明らかに管理者特権 (私は唯一のユーザーであり、したがって私のコンピューターの管理者です) によって保護されていると思われるディレクトリにアクセスし、チンパンジーのようにエラーを吐き出しました。動物園は糞を捨てる。
全体として、私が支援を求めているのは次のとおりです: -コンピュータ上のすべてのファイルを検索するプログラム (「C:/」ドライブから始まると、すべてにアクセスできると想定しています) -各ファイルとそのサイズを取得します、およびそのファイルへのパスを指定し、それをリスト/配列/その他にスローします -ファイル サイズの大きいものから小さいものの順に並べ替えます -このリストを .txt ファイルに配置します
最後の部分については、私は Streamwriter クラスにかなり慣れているので、実際には助けを必要としません。ファイル/パス/サイズのリスト/配列/その他がすべて同じパターンに準拠し、文字列に変換できる場合、その場で作成できる準単純な解析アルゴリズムを使用して、ファイルサイズでソートすることもできます。したがって、私の問題のおよそ 90.23% は、単にすべてのファイルを取得し、管理者保護フォルダーに入る、または無視して続行することです (保護フォルダー内の何かが削除されるべきではないので、それらを無視するのが最善だと思います.)それらすべてのファイルのパスとサイズを取得し、整理します。