ディスク使用量の解析

WPFを使用してUbuntuの下でディスク使用状況分析をモデルに類似のソフトウェア、参照作らhttps://github.com/Caliburn-Micro/Caliburn.Micro/tree/3.2.0/samples/features/Features.WPFをカリバーンを使用します。マイクロフレームワークが完成します

Ubuntuの下のディスク使用量アナライザ

 

プロジェクト住所: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 + = サイズ;
        }                                                                                                                                                                                
    }                                                                                                                                                                                  
}                                                                                                                                                                                      

 

おすすめ

転載: www.cnblogs.com/ALittleDruid/p/11442185.html