ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

C# ファイルパス・フォルダパスをリストアップするツール

指定したフォルダ内のファイルまたはフォルダを全てリストアップするツールを作りました。
こちらからDLできます。

GitHubにも実行ファイルとソリューション一式をアップしています。
ライセンスは MIT License です。

f:id:moko_03_25:20180915040627g:plain

ファイルリストとフォルダリストのどちらを作成するかをラジオボタンで選んでおいてから「List up」ボタンでリストアップするだけのシンプルなものです。

過去に似たようなツールを作っていますが、不便なのをそのままにしていたので一から作りました。

▼こちらは指定フォルダ以下のファイルを全てリストアップした場合
 フォルダパスとファイル名を別の列に分離して表示します。
 サイズをByte・KiB・MiBで出しています。

f:id:moko_03_25:20180915040623j:plain

▼こちらは全てのサブフォルダをリストアップした場合
 「pass」の列しか表示されません。

f:id:moko_03_25:20180915040622j:plain

実装はシンプルなので、使用者によっては以下のようなあたりで不満が出るかも。

▼全体的なこと
・ファイルを開くダイアログでフォルダを選択したい
・サブフォルダを対象に含めなくて良い時がある
CSVで出力して欲しい
・xlsxで出力して欲しい
・表に結果を出すのはいらない
・Copy to Clipboard ボタン名が長くて邪魔
・Clear ボタンは別にいらない

▼ファイルリストの場合
・特定の拡張子だけリストアップしたい(または除外したい)
・フォルダパスとファイル名を分離しなくて良い時がある
・サイズはByteかKBかMBかを選んで表示させたい
・サイズは小数点第何位まで表示するか指定したい
・大量にファイルがあると時間がかかるので非同期にしてフリーズしないで欲しい
・ ↑ 同じ理由でプログレスバーを表示して欲しい

▼フォルダリストの場合
・フォルダごとにファイル総数と総ファイルサイズを出したい
 現状はこちらを使用していただければ‥

 
このあたりは将来、気が向いたら拡張するかも。。
特に非同期処理とプログレスバーとxlsxでの出力は試してみたい。

     *      *      *     *     *

余談ですが、プログラマさんがこういったツールを作成する場合はCSVで出力することがほとんどだと思います。エクセルで開けば表の状態で閲覧できますし、ログとして保管していくのにも便利ですし、他のツールに読み込ませる中間ファイルとして汎用的で便利というのもあると思います。

でも、自分は表からコピペが馴染む感じで。

CSVで出力しても出力先のフォルダを開いてCSVを開いて、そのままエクセルでは編集せずにいったん全選択コピーしてテキストエディタに貼り付けて正規表現マクロで整形してエクセルに貼り付けて編集する‥という流れで表を作ることが多いので、CSV挟むとむしろ少し手順に感じてしまうんですよね。。

エクセルで先に表のデザインを作っておいて値だけ後から貼り付けることも多くて。

追記:上記のような作業時はXMLでデザインを用意しておいてCSV流し込むのが一番良い?

ちなみにCSVを扱う場合の注意として、1項目の中にカンマが含まれてる場合・タブスペースが含まれている場合などの対処が必要だったりと案外面倒な部分もあるので注意が必要のようです。と言っても、そのあたり全てフォローされたサンプルやライブラリは探せばすぐ見つかりそうでもあります。