zoukankan      html  css  js  c++  java
  • 检查DIsk中的空文件夹

    公司里边有一条test case是检查提供给客户的文件里边没有空的文件夹, 我自己就做了个小工具来跑这条 case. 基础就是利用.NET 3.5中的SystemFileInfo类来调区disk上的信息:

    界面如下:

    代码如下:

    代码
    namespace CheckEmpty
    {
        
    public partial class CheckEmpty : Form
        {
            
    public CheckEmpty()
            {
                InitializeComponent();
            }

            
    private void Open_Click(object sender, EventArgs e)
            {

                oFDialog.ShowDialog();
                
    if (DialogResult.Cancel != oFDialog.ShowDialog())
                {
                    CheckPath.Text 
    = oFDialog.FileName;
                }
            }

            
    private void Save_Click(object sender, EventArgs e)
            {
                
    if (DialogResult.Cancel != sFDialog.ShowDialog())
                {
                    outPutPath.Text 
    = sFDialog.FileName;
                }
            }

            
    private void Check_Click(object sender, EventArgs e)
            {
                
    if (CheckPath.Text.Trim() != "" && outPutPath.Text.Trim() != "")
                {
                    
    try
                    {
                        Errlbl.Text 
    = "";
                        toolStripProgressBar1.Value 
    = 0;
                        
    string orfile = CheckPath.Text.Trim();
                        
    string reportPath = outPutPath.Text.Trim();
                        
    if (!File.Exists(reportPath))
                        {
                            
    // Errlbl.Text = "Output File path not exist";
                            FileStream fs = File.Create(reportPath);
                            fs.Close();
                        }
                        
    int MaxCount = 0;
                        
    int EmptyCount = 0;
                        
    //Count total folders
                        CountfiletoScan(orfile, ref MaxCount);
                        
    if (MaxCount != 0)
                        {
                            toolStripProgressBar1.Maximum 
    = MaxCount;
                        }
                        StreamWriter sw 
    = File.CreateText(reportPath);
                        sw.WriteLine(
    string.Format("Following folder are empty: (Total folders: {0})", MaxCount));
                        
    // Scan empty folders
                        RecursiveScan(orfile, sw, ref EmptyCount);
                        sw.Close();
                        sw.Dispose();
                        Errlbl.ForeColor 
    = Color.Red;
                        
    if (MaxCount != 0)
                        {
                            Errlbl.Text 
    = string.Format(@"Completed! emptys({0})", EmptyCount);
                        }
                        
    else
                        {
                            Errlbl.Text 
    = "Completed! Err";
                        }
                        Clipboard.SetDataObject(reportPath); 
    //Copy output report to clipboard
                    }
                    
    catch { }
                }
                
    else
                {
                    Errlbl.Text 
    = "Both Folder and Report can not be empty";
                }
            }

            
    private void RecursiveScan(string dir, StreamWriter sw, ref int emptycount)
            {
                DirectoryInfo di 
    = new DirectoryInfo(dir);
                
    if (!di.Exists)
                {
                    
    //Original directory not exist
                    sw.WriteLine(string.Format (@"dirctory '{0}' not exist",di.FullName));
                    sw.Flush();
                    toolStripProgressBar1.Value 
    = 100;
                }
                
    else
                {
                    
    try
                    {
                        FileSystemInfo[] fsi 
    = di.GetFileSystemInfos();
                        toolStripProgressBar1.Value 
    += di.GetDirectories().Length;
                        
    if (fsi.Length == 0)
                        {
                            
    //Output empty direcotry
                            sw.WriteLine(di.FullName);
                            sw.Flush();
                            emptycount
    ++;
                        }
                        
    else
                        {
                            
    foreach (DirectoryInfo item in di.GetDirectories())
                            {
                                RecursiveScan(item.FullName, sw, 
    ref emptycount);
                            }
                        }
                    }
                    
    catch (FieldAccessException fae)
                    {
                        
    //
                    }
                    
    catch (Exception ex)
                    {
                        
    //
                    }
                }
            }

            
    private void CountfiletoScan(string dir, ref int count)
            {
                DirectoryInfo di 
    = new DirectoryInfo(dir);
                
    if (!di.Exists)
                {                
                }
                
    else
                {
                    
    try
                    {
                        DirectoryInfo[] dis 
    = di.GetDirectories();
                        count 
    += dis.Length;
                        
    foreach (DirectoryInfo item in dis)
                        {
                            CountfiletoScan(item.FullName, 
    ref count);
                        }
                    }
                    
    catch
                    { }
                }
            }
        }
    }
  • 相关阅读:
    el自定义函数库
    DOM4J
    【转载】SqlServer日期时间函数
    【原创】C#认识/理解/运用 StreamReader,StreamWriter,StringReader,StreamWriter
    【原创】C#认识/理解/运用 FileStream
    【原创】C#操作XML(带命名空间)
    【原创】ASP.NET MVC3使用html编辑器(kindeditor)
    【原创】ASP.NET MVC3 从零开始一步步构建Web
    【转载】MVC使用jqGrid
    【原创】C#使用HttpWebRequest,HttpWebResponse
  • 原文地址:https://www.cnblogs.com/qixue/p/1788894.html
Copyright © 2011-2022 走看看