国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C#實現的列出目錄下所有子目錄和文件的程序(附思路)

2024-07-21 02:25:06
字體:
來源:轉載
供稿:網友
把自己的資料刻錄成很多光盤,發現連自己都很難找到需要的文件在哪張光盤上,因此我就根據需求,在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遍歷目錄下所有文件、子目錄

{

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遍歷目錄下所有文件、子目錄

{

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);



}

}



}

}
  • 網站運營seo文章大全
  • 提供全面的站長運營經驗及seo技術!
  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 龙口市| 盐津县| 雷州市| 专栏| 图片| 灵丘县| 太谷县| 瑞昌市| 九龙坡区| 灌阳县| 哈巴河县| 济源市| 磐石市| 仪征市| 江西省| 祁东县| 太湖县| 新绛县| 永泰县| 景泰县| 临湘市| 哈巴河县| 新巴尔虎右旗| 乐清市| 上思县| 莱芜市| 石台县| 阜平县| 常熟市| 鹿泉市| 富蕴县| 遵义市| 淅川县| 锡林浩特市| 平顶山市| 北宁市| 章丘市| 雷州市| 雷州市| 江阴市| 浮山县|