选择显示字体大小

c#实现的列出目录下所有子目录和文件的程序(附思路)

     把自己的资料刻录成很多光盘,发现连自己都很难找到需要的文件在哪张光盘上,因此我就根据需求,在visual studio.net中写了一个列出目录下所有子目录和文件的程序,以方便我列出刻录的资料光盘上的所有文件信息。
  
  本程序的主要算法是递归,主函数如下:
  
  //递归列出目录下的所有文件和子目录
  
   public void listfiles( filesysteminfo fileinfo )
  
   {
  
   if( ! fileinfo.exists ) return;
  
   directoryinfo dirinfo = fileinfo as directoryinfo;
  
   if( dirinfo == null ) return; //不是目录
  
   indent++;//缩进加一
  
   filesysteminfo [] files = dirinfo.getfilesysteminfos();
  
   for( int i=0; i< i++)>遍历目录下所有文件、子目录
  
   {
  
   fileinfo file = files[i] as fileinfo;
  
   if( file != null ) // 是文件
  
   {
  
   this.richtextbox1.text+=(writespace(indent)+"-"+
  
   file.name + "\t" + converttokbyte(file.length)+"\r" );
  
   }
  
   else //是目录
  
   {
  
   this.richtextbox1.text+=(writespace(indent)+"+"+files[i].fullname+"\r");
  
   listfiles( files[i] ); //对子目录进行递归调用
  
   }
  
   }
  
   indent--;//缩进减一
  
   }
  
  程序的设计界面如下图所示:
  
  控件有两个button控件btnselect和btnsave(分别用来选择目录和保存文件);一个richtextbox控件(显示结果),一个folderbrowserdialog控件(选择目录)和一个savefiledialog控件(选择保存文件路径)。
  
  程序运行后的界面如下图所示:
  
  
  
  
  
  程序的完整代码如下:(其中红色的是我自己添加的)
  
  using system;
  
  using system.drawing;
  
  using system.collections;
  
  using system.componentmodel;
  
  using system.windows.forms;
  
  using system.data;
  
  using system.globalization;
  
  using system.io;
  
  
  
  namespace listfile_windows
  
  {
  
   ///
  
   /// form1 的摘要说明。
  
   ///
  
   public class form1 : system.windows.forms.form
  
   {
  
   private system.windows.forms.richtextbox richtextbox1;
  
   public static int indent; //缩进值
  
   private system.windows.forms.button btnselect;
  
   private system.windows.forms.button btnsave;
  
   private system.windows.forms.folderbrowserdialog folderbrowserdialog1;
  
   private system.windows.forms.savefiledialog savefiledialog1;
  
   ///
  
   /// 必需的设计器变量。
  
   ///
  
   private system.componentmodel.container components = null;
  
  
  
   public form1()
  
   {
  
   //
  
   // windows 窗体设计器支持所必需的
  
   //
  
   initializecomponent();
  
  
  
   //
  
   // todo: 在 initializecomponent 调用后添加任何构造函数代码
  
   //
  
   }
  
  
  
   ///
  
   /// 清理所有正在使用的资源。
  
   ///
  
   protected override void dispose( bool disposing )
  
   {
  
   if( disposing )
  
   {
  
   if (components != null)
  
   {
  
   components.dispose();
  
   }
  
   }
  
   base.dispose( disposing );
  
   }
  
  
  
   #region windows 窗体设计器生成的代码
  
   ///
  
   /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  
   /// 此方法的内容。
  
   ///
  
   private void initializecomponent()
  
   {
  
   this.richtextbox1 = new system.windows.forms.richtextbox();
  
   this.btnselect = new system.windows.forms.button();
  
   this.btnsave = new system.windows.forms.button();
  
   this.folderbrowserdialog1 = new system.windows.forms.folderbrowserdialog();
  
   this.savefiledialog1 = new system.windows.forms.savefiledialog();
  
   this.suspendlayout();
  
   //
  
   // richtextbox1
  
   //
  
   this.richtextbox1.location = new system.drawing.point(0, 0);
  
   this.richtextbox1.name = "richtextbox1";
  
   this.richtextbox1.size = new system.drawing.size(528, 400);
  
   this.richtextbox1.tabindex = 0;
  
   this.richtextbox1.text = "";
  
   //
  
   // btnselect
  
   //
  
   this.btnselect.location = new system.drawing.point(112, 424);
  
   this.btnselect.name = "btnselect";
  
   this.btnselect.tabindex = 1;
  
   this.btnselect.text = "选择目录";
  
   this.btnselect.click += new system.eventhandler(this.btnselect_click);
  
   //
  
   // btnsave
  
   //
  
   this.btnsave.location = new system.drawing.point(320, 424);
  
   this.btnsave.name = "btnsave";
  
   this.btnsave.tabindex = 2;
  
   this.btnsave.text = "保存文件";
  
   this.btnsave.click += new system.eventhandler(this.btnsave_click);
  
   //
  
   // form1
  
   //
  
   this.autoscalebasesize = new system.drawing.size(6, 14);
  
   this.clientsize = new system.drawing.size(528, 461);
  
   this.controls.add(this.btnsave);
  
   this.controls.add(this.btnselect);
  
   this.controls.add(this.richtextbox1);
  
   this.name = "form1";
  
   this.text = "form1";
  
   this.resumelayout(false);
  
  
  
   }
  
   #endregion
  
  
  
   ///
  
   /// 应用程序的主入口点。
  
   ///
  
   [stathread]
  
   static void main()
  
   {
  
   application.run(new form1());
  
   }
  
  
  
   //递归列出目录下的所有文件和子目录
  
   public void listfiles( filesysteminfo fileinfo )
  
   {
  
   if( ! fileinfo.exists ) return;
  
   directoryinfo dirinfo = fileinfo as directoryinfo;
  
   if( dirinfo == null ) return; //不是目录
  
   indent++;//缩进加一
  
   filesysteminfo [] files = dirinfo.getfilesysteminfos();
  
   for( int i=0; i< i++)>遍历目录下所有文件、子目录
  
   {
  
   fileinfo file = files[i] as fileinfo;
  
   if( file != null ) // 是文件
  
   {
  
   this.richtextbox1.text+=(writespace(indent)+"-"+
  
   file.name + "\t" + converttokbyte(file.length)+"\r" );
  
   }
  
   else //是目录
  
   {
  
   this.richtextbox1.text+=(writespace(indent)+"+"+files[i].fullname+"\r");
  
   listfiles( files[i] ); //对子目录进行递归调用
  
   }
  
   }
  
   indent--;//缩进减一
  
   }
  
  
  
   //控制缩进空格,n为空格数
  
   public string writespace(int n)
  
   {
  
   string strspace="";
  
   for(int i=1;i<=n;i++)
  
   strspace+=" ";
  
   return strspace;
  
   }
  
  
  
   //显示文件字节数
  
   public string converttokbyte(long len)
  
   {
  
   float val;
  
   numberformatinfo mynfi = new numberformatinfo();
  
   mynfi.numberdecimaldigits=1; //显示一位小数
  
  
  
   if(len/1024==0)
  
   return len.tostring()+"字节";
  
   if(len/1024/1024==0)
  
   {
  
   val=(float)len/1024;
  
   return val.tostring("n",mynfi)+"k字节";
  
   }
  
   val=(float)len/1024/1024;
  
   return val.tostring("n",mynfi)+"m字节";
  
  
  
   }
  
  
  
   private void btnselect_click(object sender, system.eventargs e)
  
   {
  
   indent=0;//缩进清零
  
   this.richtextbox1.resettext(); //清空文本框中的原来的文本
  
  //选择目录
  
   if(this.folderbrowserdialog1.showdialog()==dialogresult.ok)
  
   {
  
   listfiles(new directoryinfo(this.folderbrowserdialog1.selectedpath));
  
   }
  
   }
  
  
  
   private void btnsave_click(object sender, system.eventargs e)
  
   {
  
   if(this.savefiledialog1.showdialog()==dialogresult.ok)
  
   {
  
   //保存结果文件
  
   this.richtextbox1.savefile(savefiledialog1.filename,richtextboxstreamtype.plaintext);
  
  
  
   }
  
   }
  
  
  
   }
  }
  作者blog:http://blog.csdn.net/fanz2000/  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons