C#读取所有目录

来源:互联网 发布:宫刑太可怕了 知乎 编辑:程序博客网 时间:2024/04/29 21:42
  1. 根据网上资料整理而得,本来还可以读出所有目录的名字,但是考虑到文件名中包含完整文件路径,故意义不大,就不用读出目录名功能。

    主要功能:

        1.读取指定目录下含子目录中所有文件。

        2.计算文件大小

        3.文件含完整路径

        4.列表显示到ListBox控件

        5.列表写入指定Txt文本文件。

  2. using System;   
  3. using System.Data;   
  4. using System.Configuration;   
  5. using System.Web;   
  6. using System.Web.Security;   
  7. using System.Web.UI;   
  8. using System.Web.UI.WebControls;   
  9. using System.Web.UI.WebControls.WebParts;   
  10. using System.Web.UI.HtmlControls;   
  11. using System.IO;   
  12. using System.Collections;   
  13.   
  14. public partial class _Default : System.Web.UI.Page    
  15. {   
  16.   
  17.     string path = @"//192.168.1.88/movie/音乐综艺";    //目录名 也可以用相当路径   
  18.     string filter = "*.*";        //文件类型   
  19.     int m_numFiles = 0;        //文件总数   
  20.     ArrayList m_pathList = new ArrayList();//包含所有文件路径的数组   
  21.     string[] files;            //所有文件名   
  22.   
  23.   
  24.     protected void Page_Load(object sender, EventArgs e)   
  25.     {   
  26.   
  27.     }   
  28.        
  29.     private string[] CreatePathList()   
  30.     {   
  31.         if (m_numFiles <= 0)   
  32.         {   
  33.             return null;   
  34.         }   
  35.   
  36.         string[] str = new string[m_numFiles];   
  37.         int index = 0;   
  38.   
  39.         try  
  40.         {   
  41.             IEnumerator pathIter = m_pathList.GetEnumerator();   
  42.             while (pathIter.MoveNext())   
  43.             {   
  44.                 string[] ar = (string[])(pathIter.Current);   
  45.                 IEnumerator fileIter = ar.GetEnumerator();   
  46.                 while (fileIter.MoveNext())   
  47.                 {   
  48.                     str[index] = (string)(fileIter.Current);   
  49.                     ++index;   
  50.                 }   
  51.             }   
  52.         }   
  53.         catch (Exception e)   
  54.         {   
  55.             Console.Write(e.ToString());   
  56.             return null;   
  57.         }   
  58.   
  59.         return str;   
  60.   
  61.     }   
  62.   
  63.     private void ParseDirectory(string path, string p)   
  64.     {   
  65.         string[] dirs = Directory.GetDirectories(path);//得到子目录   
  66.         IEnumerator iter = dirs.GetEnumerator();   
  67.         while (iter.MoveNext())   
  68.         {   
  69.             string str = (string)(iter.Current);   
  70.             ParseDirectory(str, filter);   
  71.         }   
  72.         string[] files = Directory.GetFiles(path, filter);   
  73.         if (files.Length > 0)   
  74.         {   
  75.             foreach (string filename in files)   
  76.             {   
  77.                    
  78.                 FileInfo inf=new FileInfo(filename);   
  79.                 float value = inf.Length / 1024 /1024;   
  80.                 m_numFiles += files.Length;   
  81.                 m_pathList.Add(files);   
  82.                 ListBox1.Items.Add(filename);   
  83.                 ListBox1.Items.Add("文件大小:"+value.ToString()+"M");   
  84.             }   
  85.         }   
  86.   
  87.     }   
  88.        
  89.     protected void BtGetFileList_Click(object sender, EventArgs e)   
  90.     {   
  91.         ParseDirectory(path, "*.*");   
  92.         files = CreatePathList();        //生成文件名数组   
  93.         //ListBox1.Items.Add(files.ToString());   
  94.         if (files == null)   
  95.         {   
  96.             throw new Exception(String.Concat("No file found in ", path));   
  97.         }   
  98.     }   
  99.     protected void BtInsrtTxt_Click(object sender, EventArgs e)   
  100.     {   
  101.         if (File.Exists("c://test.txt") == true)   
  102.         {   
  103.             try  
  104.             {   
  105.                 //label2.Text = "OK";   
  106.                 //File.Delete("c://test.txt");   
  107.                 //File.Create("test.txt");   
  108.                 StreamWriter sw = new StreamWriter("c://test.txt"true);   
  109.                 for (int i = 0; i < ListBox1.Items.Count; i++)   
  110.                 {   
  111.                     //写入TXT文件                        
  112.                     sw.Write(ListBox1.Items[i].ToString() + "/r/n");   
  113.                 }   
  114.                 sw.Close();   
  115.   
  116.   
  117.             }   
  118.             catch (Exception err)   
  119.             {   
  120.                 Console.WriteLine(err.ToString());   
  121.             }   
  122.         }   
  123.         else  
  124.         {   
  125.             //label2.Text = "error";   
  126.         }   
  127.     }   
原创粉丝点击