WPFを使用してUbuntuの下でディスク使用状況分析をモデルに類似のソフトウェア、参照作らhttps://github.com/Caliburn-Micro/Caliburn.Micro/tree/3.2.0/samples/features/Features.WPFをカリバーンを使用します。マイクロフレームワークが完成します
プロジェクト住所:https://github.com/ALittleDruid/DiskSpaceAnalyse
コアコード
公共 のボイド)(分析 { 場合(親!= nullの &&!文字列 .IsNullOrEmpty(フォルダ名)&& Directory.Exists(フォルダ名)) { DirectoryInfoディ = 新しいDirectoryInfo(フォルダ名)。 もし((di.Attributes&FileAttributes.Directory)!= 0 ) { しようと { のvar)(ファイル=のdi.GetFilesを。 VaRの DIRS = di.GetDirectories()。//アクセス権極端になりますどの部分をカタログません例外をキャッチした後に無視することができます FileCount = files.Length。 FolderCount = dirs.Length。 foreachの(のFileInfo Fiの中のファイル) { サイズ + = fi.Length。 } foreachの(VARのアイテムに DIRS) { 場合((item.Attributes&FileAttributes.ReparsePoint)!= 0 ) { 続行 ; //はシンボリックリンクを無視し、またはそれは無限の再帰をもたらすことができる } VARの D =)。 新しい新FolderTreeModel(item.FullName、この Children.Add(D); } foreachの(VARの項目に子供) { Item.Analyse(); // 再帰オーバーフロースタックあまりリード層を心配する必要はありません } } キャッチ { } VARの TMP = 新しいですリスト<FolderTreeModel> (子供)。 Children.Clear(); Children.AddRange(tmp.OrderByDescending(X => x.Size))。// 按文件夹大小排序 Parent.Size + = サイズ; } } }