《C#語(yǔ)言程序設(shè)計(jì)項(xiàng)目教程》第10章 文 件寫(xiě)字字帖_第1頁(yè)
《C#語(yǔ)言程序設(shè)計(jì)項(xiàng)目教程》第10章 文 件寫(xiě)字字帖_第2頁(yè)
《C#語(yǔ)言程序設(shè)計(jì)項(xiàng)目教程》第10章 文 件寫(xiě)字字帖_第3頁(yè)
《C#語(yǔ)言程序設(shè)計(jì)項(xiàng)目教程》第10章 文 件寫(xiě)字字帖_第4頁(yè)
《C#語(yǔ)言程序設(shè)計(jì)項(xiàng)目教程》第10章 文 件寫(xiě)字字帖_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第10章文件本章導(dǎo)讀:本章的主要內(nèi)容是學(xué)習(xí)文件。然后通過(guò)項(xiàng)目“我的資源管理器”為導(dǎo)向,三個(gè)任務(wù)(制作我的資源管理器窗體、顯示電腦邏輯磁盤符號(hào)、顯示文件詳細(xì)信息)為驅(qū)動(dòng),學(xué)習(xí)有關(guān)C#語(yǔ)言的文件相關(guān)知識(shí),包括File和FileInfo類的使用、Directory類和DirectoryInfo類的使用、TreeView控件和ListView控件的使用,本項(xiàng)目的完成初步學(xué)習(xí)文件的相關(guān)知識(shí)以及TreeView控件和ListView控件的基本應(yīng)用。第10章文件

——任務(wù)一制作我的資源管理器窗體一、任務(wù)描述:制作如下圖所示“我的資源管理器”界面。二、知識(shí)準(zhǔn)備:1TreeView控件2ListView控件二、知識(shí)準(zhǔn)備:1、TreeView控件TreeView控件也叫做樹(shù)控件,主要用來(lái)表示具有層次結(jié)構(gòu)的節(jié)點(diǎn),其中有包含子節(jié)點(diǎn)的節(jié)點(diǎn)叫父節(jié)點(diǎn),被包含節(jié)點(diǎn)叫子節(jié)點(diǎn)。在Windows操作系統(tǒng)的資源管理器功能的左邊用來(lái)顯示文件和文件夾結(jié)構(gòu)的就是TreeView控件。對(duì)TreeView控件的主要操作有:添加和刪除節(jié)點(diǎn),為節(jié)點(diǎn)添加圖標(biāo)等。二、知識(shí)準(zhǔn)備:1、TreeView控件publicvirtualintAdd(TreeNodenode)(1)添加節(jié)點(diǎn)對(duì)TreeView控件的節(jié)點(diǎn)進(jìn)行操作時(shí),都要用到Nodes屬性。語(yǔ)法:說(shuō)明:node表示要添加到節(jié)點(diǎn)集合中的一個(gè)節(jié)點(diǎn),返回值為該節(jié)點(diǎn)的索引值。舉例:為名為treeView1的TreeView控件添加一個(gè)叫“我的電腦”的子節(jié)點(diǎn)。TreeNodetn=newTreeNode(“我的電腦”);treeView1.Nodes.Add(tn);二、知識(shí)準(zhǔn)備:1、TreeView控件publicvoidRemove(TreeNodenode)(2)刪除節(jié)點(diǎn)語(yǔ)法:說(shuō)明:node表示要移除的節(jié)點(diǎn)。通常需要?jiǎng)h除選中的節(jié)點(diǎn),可以通過(guò)SelectecNode屬性來(lái)刪除節(jié)點(diǎn),例如:treeView.Nodes.Remove(treeView.SelectedNode);表示刪除被選中的節(jié)點(diǎn)。二、知識(shí)準(zhǔn)備:1、TreeView控件(2)為節(jié)點(diǎn)添加圖標(biāo)2)設(shè)置TreeView控件的ImageList屬性值為imageList1。方法有兩種,一種是如圖示通過(guò)屬性窗口設(shè)置;另一種方法是通過(guò)代碼設(shè)置:treeView1.ImageList=imageList1;1)先添加一個(gè)ImageList控件imageList1,并設(shè)置好圖片內(nèi)容。通過(guò)屬性窗口設(shè)置通過(guò)代碼設(shè)置二、知識(shí)準(zhǔn)備:1、TreeView控件(3)為節(jié)點(diǎn)設(shè)置圖像設(shè)置節(jié)點(diǎn)的圖像,是通過(guò)設(shè)置節(jié)點(diǎn)的ImageIndex和SelectedImageIndex屬性,其值為ImageList控件中的圖像索引值。其中,ImageIndex屬性是節(jié)點(diǎn)正常和展開(kāi)狀態(tài)下的圖像,SelectedImageIndex是節(jié)點(diǎn)被選中狀態(tài)下的圖像。設(shè)置TreeView控件的所有節(jié)點(diǎn)圖像:treeView1.ImageIndex=0;treeView1.SelectedImageIndex=1;二、知識(shí)準(zhǔn)備:1、TreeView控件(3)為節(jié)點(diǎn)設(shè)置圖像設(shè)置某個(gè)樹(shù)節(jié)點(diǎn)的圖像,下面的代碼表示,申請(qǐng)一個(gè)名為“我的電腦”的樹(shù)節(jié)點(diǎn),設(shè)置其圖標(biāo),然后加入到treeView1樹(shù)控件中。TreeNodetn=newTreeNode(“我的電腦”);tn.ImageIndex=0;tn.SelectedImageIndex=1;treeView1.Nodes.Add(tn);二、知識(shí)準(zhǔn)備:2、ListView控件ListView控件又叫列表視圖控件,主要用來(lái)顯示帶圖標(biāo)的項(xiàng)的列表,它的顯示可以分為小圖標(biāo)、大圖標(biāo)和列表3種視圖。在Windows操作系統(tǒng)的資源管理器功能的右邊用來(lái)顯示文件和文件夾詳細(xì)信息的就是ListView控件。對(duì)ListView控件的主要操作跟前面的TreeView控件相似,主要有添加和移除項(xiàng),為項(xiàng)添加圖標(biāo)等。二、知識(shí)準(zhǔn)備:(1)添加項(xiàng)對(duì)ListView控件的節(jié)點(diǎn)進(jìn)行操作時(shí),都要用到Items屬性。語(yǔ)法:publicvirtualListViewItemAdd(stringtext,intimageIndex)2、ListView控件說(shuō)明:第一個(gè)參數(shù)text表示項(xiàng)的文本;第二個(gè)參數(shù)表示項(xiàng)的圖像索引。舉例:為名為listView1的ListView控件添加一個(gè)叫“我的電腦”的子項(xiàng)。listView1.Items.Add(“我的電腦”);二、知識(shí)準(zhǔn)備:(2)移除項(xiàng)語(yǔ)法:publicvoidRemoveAt(intindex)2、ListView控件說(shuō)明:index表示要移除項(xiàng)的索引。舉例:移除被選中的項(xiàng)可以采用以下代碼:listView1.Items.RemoveAt(listView1.SelectedItem[0].Index);二、知識(shí)準(zhǔn)備:(2)移除項(xiàng)要移除所有項(xiàng)可以采用Clear方法,語(yǔ)法:publicvirtualvoidClear()2、ListView控件如果需要?jiǎng)h除所有選中的節(jié)點(diǎn),可以通過(guò)SelectecItems屬性的Clear方法來(lái)清除所有選中的項(xiàng):listView1.SelectedItems.Clear();二、知識(shí)準(zhǔn)備:(3)設(shè)置控件的選擇項(xiàng)通過(guò)ListView控件的Selectd屬性可以設(shè)置控件的選中項(xiàng)。Selectd屬性主要用于獲取或設(shè)置一個(gè)值,語(yǔ)法:publicboolSelected{get;set}2、ListView控件說(shuō)明:如果該值為true則表示選中此項(xiàng),為false則表示未選中此項(xiàng)。舉例:設(shè)置選中l(wèi)istView1中的第2項(xiàng)。listView1.Items[1].Selected=true;//索引從0開(kāi)始二、知識(shí)準(zhǔn)備:(4)為項(xiàng)添加圖標(biāo)ListView控件主要有以下幾種視圖:List視圖、Details視圖、SmallIcon視圖和LargeIcon視圖,分別表示列表視圖、詳細(xì)列表視圖、小圖標(biāo)和大圖標(biāo)。本項(xiàng)目中,選擇的是Details視圖。2、ListView控件二、知識(shí)準(zhǔn)備:(4)為項(xiàng)添加圖標(biāo)2、ListView控件2)設(shè)置ListView控件的SmallImageList或LargeImageList屬性值為步驟1中的ImageList控件。方法有兩種,一種是如圖所示通過(guò)屬性窗口設(shè)置;另一種方法是通過(guò)代碼設(shè)置:listView1.SmallImageList=imageList1;1)首先添加ImageList控件,并設(shè)置好圖片內(nèi)容。通過(guò)屬性窗口設(shè)置通過(guò)代碼窗口設(shè)置二、知識(shí)準(zhǔn)備:(4)為項(xiàng)添加圖標(biāo)2、ListView控件3)為每項(xiàng)設(shè)置圖像設(shè)置向的圖像,是通過(guò)設(shè)置項(xiàng)的ImageIndex,其值為ImageList控件中的圖像索引值。為L(zhǎng)istView控件添加名為“我的電腦”項(xiàng),其圖標(biāo)為ImageList控件中索引為2的圖片:listView1.Items.Add(“我的電腦”);treeView1.Items[0].ImageIndex=2;三、任務(wù)分析:1、如圖所示,資源管理器的構(gòu)成主要由以下幾種控件組成:MenuStrip菜單控件、ToolStrip工具欄控件、TreeView樹(shù)控件和ListView類表視圖控件。四、任務(wù)實(shí)施:1、新建1個(gè)名為“ZYGLQ”的窗體應(yīng)用程序。2、在工具箱拖動(dòng)MenuStrip控件放到窗體上方。添加以下菜單,并設(shè)置相應(yīng)的快捷鍵:文件(F)、編輯(E)、查看(V)、收藏(A)、工具(T)、幫助(H)。3、在工具箱拖動(dòng)ToolStrip控件放到菜單控件下方。添加工具欄如下:組織、包含到庫(kù)中、共享。此工具欄的功能在此項(xiàng)任務(wù)中未實(shí)現(xiàn),有興趣的同學(xué)可以自行完成功能。四、任務(wù)實(shí)施:4、在工具箱拖動(dòng)ImageList控件,為ImageList控件添加圖標(biāo)文件,“我的電腦”圖標(biāo)、“文件”圖標(biāo)和“文件夾”圖標(biāo),如圖所示。四、任務(wù)實(shí)施:5、在工具箱拖動(dòng)TreeView控件放到窗體左側(cè),命名為treeDirectory。如圖所示,設(shè)置TreeView控件的ImageList屬性。四、任務(wù)實(shí)施:6、在工具箱拖動(dòng)ListView控件放到窗體左側(cè),命名為lstDetail,設(shè)置View屬性為Details(列表視圖)。單擊“EditColumns”,打開(kāi)如右圖所示的編輯列文本框,設(shè)置顯示的列屬性。本任務(wù)主要是設(shè)置列的Text屬性。五、任務(wù)小結(jié):1、設(shè)置TreeView控件的ImageList屬性兩種方法:(1)直接通過(guò)屬性窗口設(shè)置,如圖所示。(2)在后臺(tái)通過(guò)代碼設(shè)置:this.treeDirectory.ImageList=imageList1;五、任務(wù)小結(jié):2、ListView控件可以通過(guò)如圖所示ImageIndex屬性設(shè)置列所對(duì)應(yīng)的圖標(biāo)。第10章文件

——任務(wù)二顯示電腦邏輯磁盤符號(hào)

一、任務(wù)描述:對(duì)任務(wù)一中的“我的資源管理器”窗體進(jìn)行完善,添加方法使得左邊的TreeView控件顯示電腦的邏輯磁盤符號(hào),運(yùn)行如下圖所示。二、知識(shí)準(zhǔn)備:1File和FileInfo類2Directory和DirectoryInfo類二、知識(shí)準(zhǔn)備:1、File和FileInfo類File類和FileInfo類兩者的主要區(qū)別是:File不能實(shí)例化,只提供靜態(tài)方法,而后者可以實(shí)例化,提供的方法和File類相似。C#語(yǔ)言中通過(guò)File和FileInfo類來(lái)創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開(kāi)文件。在File類中提供了一些靜態(tài)方法,使用這些方法可以完成以上功能,但File類不能建立對(duì)象。FileInfo類使用方法和File類基本相同,但FileInfo類能建立對(duì)象。在使用這兩個(gè)類時(shí)需要引用System.IO命名空間。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(1)File類File類的方法都是靜態(tài)的,如果只想要執(zhí)行一個(gè)操作,使用File類方法比使用FileInfo類實(shí)例方法效率更高。File類的常見(jiàn)方法和說(shuō)明:方

法說(shuō)

明AppendText返回StreamWrite,向指定文件添加數(shù)據(jù);如文件不存在,就創(chuàng)建該文件。Create按指定路徑建立新文件Copy復(fù)制指定文件到新文件夾。。Delete刪除指定文件。Exists檢查指定路徑的文件是否存在,存在,返回true。GetAttributes獲取指定文件的屬性。GetCreationTime返回指定文件或文件夾的創(chuàng)建日期和時(shí)間。GetLastAccessTime返回上次訪問(wèn)指定文件或文件夾的創(chuàng)建日期和時(shí)間。GetLastWriteTime返回上次寫(xiě)入指定文件或文件夾的創(chuàng)建日期和時(shí)間。Open返回指定文件相關(guān)的FileStream,并提供指定的讀/寫(xiě)許可。OpenRead返回指定文件相關(guān)的只讀FileStream。OpenWrite返回指定文件相關(guān)的讀/寫(xiě)FileStream。SetAttributes設(shè)置指定文件的屬性。SetCretionTime設(shè)置指定文件的創(chuàng)建日期和時(shí)間。SetLastAccessTime設(shè)置上次訪問(wèn)指定文件的日期和時(shí)間。SetLastWriteTime設(shè)置上次寫(xiě)入指定文件的日期和時(shí)間。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(2)FileInfo類FileInfo類的使用方法與File類類似,沒(méi)有靜態(tài)方法,如果要在對(duì)象上進(jìn)行多種方法調(diào)用,使用FileInfo類效率更高。FileInfo類有以下常用的屬性:FileInfo類的常用屬性屬

性說(shuō)

明Attributes獲取或設(shè)置當(dāng)前Filesysteminfo的Fileattributes。CreateTime獲取或設(shè)置當(dāng)前Filesysteminfo對(duì)象的創(chuàng)建時(shí)間。Exists檢查指定目錄是否存在的值。Extension獲取表示文件擴(kuò)展名部分的字符串。FullName獲取目錄或文件的完整目錄。Length獲取當(dāng)前文件的大小Name獲取文件名。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作1)判斷文件是否存在①File類的Exists方法該方法聲明如下:publicstaticboolExists(stringpath)說(shuō)明:參數(shù)path表示要測(cè)試的目錄路徑。如存在則返回true,否則為false,如果path為空或零長(zhǎng)度字符串,也返回false。舉例:if(File.Exists(@"D:\test.txt"))//判斷在D盤下是否存在test.txt文件說(shuō)明:如果不指明路徑,默認(rèn)為應(yīng)用程序的當(dāng)前路徑。例如:File.Exists("test.txt")二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作1)判斷文件是否存在②FileInfo類的Exists屬性該方法聲明如下:publicoverrideboolExists{get;}說(shuō)明:如果文件存在,屬性值則為true,否則為false。舉例:FileInfofinfo=newFileInfo(@"C:\text.txt");if(finfo.Exists)//判斷finfo是否存在,即是在C盤下是否存在text.txt文件二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作2)創(chuàng)建文件①File類的Creat方法,該方法聲明如下:publicstaticFileStreamCreate(stringpath)publicstaticFileStreamCreate(stringpath,intbufferSize)publicstaticFileStreamCreate(stringpath,intbufferSize,FileOptionoptions)publicstaticFileStreamCreate(stringpath,intbufferSize,FileOptionoptions,FileSecurityfilesecurity)參數(shù)說(shuō)明:path:文件名。bufferSize:用于讀取和寫(xiě)入文件的已放入緩沖區(qū)的字節(jié)數(shù)。options:FileOption值之一,它描述如何創(chuàng)建或改寫(xiě)該文件。fileSecurity:FileSecurity值之一,它確定文件的訪問(wèn)控制和審核安全性。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作2)創(chuàng)建文件②FileInfo類的Creat方法該方法聲明如下:publicFileStreamCreate()說(shuō)明:默認(rèn)情況下,該方法將向所有用戶授予對(duì)新文件的完全讀寫(xiě)訪問(wèn)權(quán)限。舉例:FileInfofinfo=newFileInfo(@"D:\Test.txt");//創(chuàng)建FileInfo對(duì)象finfo.Create();//創(chuàng)建文件二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作3)打開(kāi)文件①讀/寫(xiě)方式使用File類的Open方法可以實(shí)現(xiàn)以讀/寫(xiě)方式打開(kāi)文件,此方法可以打開(kāi)指定路徑上的FileStream對(duì)象,且具有讀/寫(xiě)訪問(wèn)權(quán)限。語(yǔ)法:publicstaticFileStreamOpen(stringpath,FileModemode)說(shuō)明:參數(shù)path表示要打開(kāi)的文件路徑;打開(kāi)文件有3種方式:1、讀/寫(xiě)方式;2、只讀方式;3、寫(xiě)入方式??梢允褂肍ile類或FileInfo類實(shí)現(xiàn)文件的打開(kāi)操作,本節(jié)將以File類為例講解。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作3)打開(kāi)文件①讀/寫(xiě)方式參數(shù)mode為FileMode枚舉值之一。FileMode枚舉值成員及說(shuō)明如表所示。FileMode枚舉值成員及說(shuō)明成

員說(shuō)

明CreateNew創(chuàng)建新文件。Create創(chuàng)建新文件。如果文件已經(jīng)存在,則覆蓋它。Open打開(kāi)已經(jīng)存在的文件。OpenOrCreate如果文件存在,則打開(kāi);否則創(chuàng)建新文件。Truncat打開(kāi)存在文件,且文件打開(kāi)時(shí)被截?cái)酁?字節(jié)大小。Append打開(kāi)現(xiàn)有文件并查找到文件尾,或創(chuàng)建新文件。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作3)打開(kāi)文件①讀/寫(xiě)方式舉例:打開(kāi)可讀寫(xiě)文件FileStreamfs=File.Open(@"D:\Test.txt",FileMode.Open);說(shuō)明:以可讀寫(xiě)方式打開(kāi)D盤下的Test.txt文件。以讀寫(xiě)方式創(chuàng)建文件并打開(kāi)(文件不存在)FileStreamfs=File.Open(@"D:\Test.txt",FileMode.OpenOrCreate);說(shuō)明:以讀寫(xiě)方在D盤下創(chuàng)建Test.txt文件,并打開(kāi)。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作3)打開(kāi)文件①讀/寫(xiě)方式舉例:打開(kāi)文件時(shí),清空文件中的內(nèi)容FileStreamfs=File.Open(@"D:\Test.txt",FileMode.Truncate);說(shuō)明:打開(kāi)D盤下的Test.txt文件,并清空文件的內(nèi)容,然后進(jìn)行讀寫(xiě)。打開(kāi)文件追加操作FileStreamfs=File.Open(@"D:\Test.txt",FileMode.Append);說(shuō)明:打開(kāi)D盤下的Test.txt文件,并在末尾進(jìn)行追加操作。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作3)打開(kāi)文件②只讀方式語(yǔ)法:publicstaticFileStreamOpenRead(stringpath)說(shuō)明:參數(shù)path表示要打開(kāi)文件的路徑。舉例:FileStreamfs=File.OpenRead(@"D:\Test.txt");二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作3)打開(kāi)文件③寫(xiě)入方式語(yǔ)法:publicstaticFileStreamOpenWrite(stringpath)說(shuō)明:參數(shù)path表示要打開(kāi)文件的路徑。舉例:FileStreamfs=File.OpenWrite(@"D:\Test.txt");二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作4)復(fù)制文件①File類的Copy方法。Copy方法有以下兩種重載形式,語(yǔ)法:publicstaticvoidCopy(stringsourceFileName,stringdestFileName)publicstaticvoidCopy(stringsourceFileName,stringdestFileName,booloverwrite)說(shuō)明:sourceFileName:要復(fù)制的文件。destFileName:目標(biāo)文件的名稱。如果是第一種重載形式,不能是現(xiàn)有文件。overwrite:為true表示可以改寫(xiě)目標(biāo)文件,否則為false。舉例:File.Copy(@"D:\Test.txt",@"E:\Test.txt");//將D盤的Test.txt復(fù)制到E盤根目錄下。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作4)復(fù)制文件②FileInfo類的CopyTo方法。CopyTo方法有以下兩種重載形式,語(yǔ)法:publicFileInfovoidCopyTo(stringdestFileName)publicFileInfovoidCopyTo(stringdestFileName,booloverwrite)說(shuō)明:

destFileName:要復(fù)制到的新文件的名稱。overwrite:為true表示為現(xiàn)有文件改寫(xiě),否則為false。第一種重載形式返回值為帶有完全限定路徑的新文件,第二種重載形式的返回值為新文件。舉例:FileInfofinfo=newFileInfo(@"D:\Test.txt");//創(chuàng)建FileInfo對(duì)象finfo.CopyTo(@"E:\Test.txt",true);//復(fù)制文件到E盤根目錄下二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作5)移動(dòng)文件①File類的Move方法。語(yǔ)法:publicstaticvoidMove(stringsourceFileName,stringdestFileName)說(shuō)明:sourceFileName:要移動(dòng)的文件名稱。destFileName:文件的新路徑。舉例:File.Move(@"D:\Test.txt",@"E:\Test.txt");//將D盤的Test.txt移動(dòng)到E盤根目錄下。File.Move(@"D:\Test.txt",@"E:\Test1.txt");//將D盤的Test.txt移動(dòng)到E盤根目錄下,并修改名稱為Test1。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作5)移動(dòng)文件②FileInfo類的MoveTo方法。語(yǔ)法:publicvoidMoveTo(stringdestFileName)說(shuō)明:destFileName:文件移動(dòng)到的新路徑,可以指定不同文件名。舉例:FileInfofinfo=newFileInfo(@"D:\Test.txt");//創(chuàng)建FileInfo對(duì)象finfo.MoveTo(@"E:\Test1.txt");//移動(dòng)文件到E盤根目錄下,并改名為Test1二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作6)刪除文件①File類的Delete方法。語(yǔ)法:publicstaticvoidDelete(stringpath)說(shuō)明:path:要?jiǎng)h除的文件名稱。舉例:File.Delete(@"D:\Test.txt");//將D盤下的Test.txt文件刪除。注意:如果當(dāng)前被刪除的文件正在被使用,則刪除發(fā)生異常。二、知識(shí)準(zhǔn)備:1、File和FileInfo類(3)文件的基本操作6)刪除文件②FileInfo類的Delete方法。語(yǔ)法:publicoverridevoidDelete()舉例:FileInfofinfo=newFileInfo(@"D:\Test.txt");//創(chuàng)建FileInfo對(duì)象finfo.Delete();//將D盤下的Test.txt文件刪除。二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類Directory類來(lái)創(chuàng)建、復(fù)制、刪除、移動(dòng)文件夾。在Directory類中提供了一些靜態(tài)方法,使用這些方法可以完成以上功能。但Directory類不能建立對(duì)象。DirectoryInfo類使用方法和Directory類基本相同,但DirectoryInfo類能建立對(duì)象。在使用這兩個(gè)類時(shí)需要引用System.IO命名空間。二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類Directory類主要用于對(duì)文件夾的創(chuàng)建、復(fù)制、移動(dòng)、刪除、重命名、獲取或設(shè)置與文件夾的創(chuàng)建、訪問(wèn)等相關(guān)的時(shí)間信息的操作。Directory類的常用方法及說(shuō)明如表所示。(1)Directory類二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類(1)Directory類Directory類的常用方法和說(shuō)明方

法說(shuō)

明CreateDirectory按指定路徑創(chuàng)建所有文件夾和子文件夾。Delete刪除指定文件夾。Exists檢查指定目錄的文件夾是否存在,存在,返回true。Move將指定文件或文件夾及其內(nèi)容移動(dòng)到新位置。GetCreationTime返回指定文件或文件夾的創(chuàng)建日期和時(shí)間。GetCurrentDirectory獲取應(yīng)用程序的當(dāng)前工作文件夾。GetDirectories獲取指定文件夾中子文件夾的名稱。GetDirectoryRoot返回指定路徑的卷信息、根信息或兩者同時(shí)返回。GetFiles返回指定文件夾中子文件的名稱。GetFileSystemEntries返回指定文件夾中所有文件和子文件的名稱。GetLastAccessTime返回上次訪問(wèn)指定文件或文件夾的創(chuàng)建日期和時(shí)間。GetLastWriteTime返回上次寫(xiě)入指定文件或文件夾的創(chuàng)建日期和時(shí)間。GetLogicalDrives檢索計(jì)算機(jī)中的所有驅(qū)動(dòng)器,例如A:、C:等等。GetParent獲取指定路徑的父文件夾,包括絕對(duì)路徑和相對(duì)路徑。SetCreationTime設(shè)置指定文件或文件夾的創(chuàng)建日期和時(shí)間。SetCurrentDirectory將應(yīng)用程序的當(dāng)前工作文件夾設(shè)置指定文件夾。SetLastAccessTime設(shè)置上次訪問(wèn)指定文件或文件夾的日期和時(shí)間。SetLastWriteTime設(shè)置上次寫(xiě)入指定文件夾的日期和時(shí)間。二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類DirectoryInfo類使用的相關(guān)方法與Directory類類似。除此之外,DirectoryInfo類有以下常用的屬性,如表所示。(2)DirectoryInfo類DirectoryInfo類的常用屬性屬

性說(shuō)

明Attributes獲取或設(shè)置當(dāng)前Filesysteminfo的Fileattributes。CreatTime獲取或設(shè)置當(dāng)前Filesysteminfo對(duì)象的創(chuàng)建時(shí)間。Exists檢查指定目錄是否存在的值。FullName獲取目錄或文件的完整目錄。Parent獲取指定目錄的父目錄。Name獲取DirectoryInfo實(shí)例的名稱。二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類publicstaticboolExists(stringpath)(3)文件夾的基本操作1)判斷文件夾是否存在①Directory類的Exists方法該方法聲明如下:說(shuō)明:參數(shù)path表示要測(cè)試的目錄路徑。如存在則返回true,否則為false。舉例:if(Directory.Exists(@"C:\Dir1\Dir2"))//判斷是否存在C:\Dir1\Dir2目錄二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類publicoverrideboolExists{get;}(3)文件夾的基本操作1)判斷文件夾是否存在②DirectoryInfo類的Exists屬性語(yǔ)法:說(shuō)明:屬性值表明如果目錄存在,則為true,否則為false。舉例:DirectoryInfodinfo=newDirectoryInfo(@"C:\Dir1\Dir2");if(dinfo.Exists)//判斷dinfo是否存在,即是是否存在C:\Dir1\Dir2目錄二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類publicstaticDirectoryInfoCreatDirectory(stringpath)publicstaticDirectoryInfoCreatDirectory(stringpath,DirectorySecuritydirectorySecurity)(3)文件夾的基本操作2)創(chuàng)建文件夾①Directory類的CreatDirectory方法該方法聲明如下:說(shuō)明:參數(shù)path表示要?jiǎng)?chuàng)建的目錄路徑。參數(shù)directorySecurity表示要應(yīng)用于此目錄的訪問(wèn)控制。舉例:Directory.CreatDirectory(@"C:\Dir1\Dir2");//在C:\Dir1文件夾下創(chuàng)建名為Dir2子文件夾二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類publicvoidCreat()publicvoidCreat(DirectorySecuritydirectorySecurity)(3)文件夾的基本操作2)創(chuàng)建文件夾②DirectoryInfo類的Creat方法該方法聲明如下:說(shuō)明:參數(shù)directorySecurity表示要應(yīng)用于此目錄的訪問(wèn)控制。舉例:DirectoryInfodinfo=newDirectoryInfo(@"C:\Dir1\Dir2");//創(chuàng)建DirectoryInfo對(duì)象dinfo.Create();//創(chuàng)建文件夾二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類publicstaticDirectoryInfoMove(stringsourceDirName,stringdestDirName)(3)文件夾的基本操作3)移動(dòng)文件夾①Directory類的Move方法該方法聲明如下:說(shuō)明:參數(shù)sourceDirName表示要移動(dòng)的文件或目錄的路徑。參數(shù)destDirName表示移動(dòng)過(guò)后的新路徑。舉例:Directory.Move(@"C:\Dir1\Dir2",@"C:\New");//將C:\Dir1下的Dir2文件夾移動(dòng)到D盤的New文件夾中二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類publicvoidMoveTo(stringdestDirName)(3)文件夾的基本操作3)移動(dòng)文件夾②DirectoryInfo類的MoveTo方法該方法聲明如下:說(shuō)明:參數(shù)destDirName表示要將此目錄移動(dòng)到的目標(biāo)位置的名稱或路徑。舉例:DirectoryInfodinfo=newDirectoryInfo(@"C:\Dir1");dinfo.MoveTo(@"C:\New\Dir1");//移動(dòng)到New文件夾下注意:Move方法和MoveTo只能移動(dòng)統(tǒng)一磁盤根目錄下的文件夾,也就是說(shuō)C盤的文件件只能在C盤內(nèi)移動(dòng)。二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類publicstaticVoidDelete(stringpath)publicstaticVoidDelete(stringpath,boolrecursive)(3)文件夾的基本操作4)刪除文件夾①Directory類的Delete方法該方法聲明如下:說(shuō)明:參數(shù)path表示要移除的空目錄或目錄的名稱。參數(shù)recursive如果為true表示要同時(shí)移除path中的目錄、子目錄和文件,若為false,則僅當(dāng)目錄為空時(shí)才可刪除。舉例:Directory.Delete(@"c:\Dir1\Dir2",true);//將C:\Dir1下的Dir2文件夾及所有子文件和子文件夾都移除二、知識(shí)準(zhǔn)備:2、Directory和DirectoryInfo類publicoverridevoidDelete()publicvoidDelete(boolrecursive)(3)文件夾的基本操作4)刪除文件夾②DirectoryInfo類的Delete方法該方法聲明如下:說(shuō)明:參數(shù)recursive如果為true則表示要同時(shí)移除目錄、其子目錄和文件,若為false,則僅當(dāng)目錄為空時(shí)才可刪除。舉例:DirectoryInfodinfo=newDirectoryInfo(@"C:\Dir1");dinfo.Delete();//刪除文件夾C:\Dir1及其子文件夾和子文件三、任務(wù)分析:1、如何顯示電腦的邏輯盤符可以通過(guò)Directory類的GetLogicalDrives()方法得到所有的電腦盤符,因?yàn)槠浞祷刂凳亲址當(dāng)?shù)組,所有可以通過(guò)foreach語(yǔ)句對(duì)所有盤符進(jìn)行遍歷,對(duì)得到的每個(gè)盤符作為節(jié)點(diǎn)添加到TreeView控件中。2、電腦的邏輯盤符應(yīng)該作為TreeView控件根節(jié)點(diǎn)的子節(jié)點(diǎn),通過(guò)如下代碼實(shí)現(xiàn):treeDirectory.Nodes[0].Nodes.Add(disk);treeDirectory.Nodes[0]代表TreeView控件的根節(jié)點(diǎn)。三、任務(wù)分析:3、當(dāng)該目錄下有子目錄時(shí),節(jié)點(diǎn)處應(yīng)該顯示“+”號(hào),否則則不顯示“+”。添加方法DetectSub(TreeNodenowNode)來(lái)檢測(cè)nowNode節(jié)點(diǎn)下是否有子節(jié)點(diǎn)。如果有子節(jié)點(diǎn),則通過(guò)nowNode.Nodes.Add("tmp")為該節(jié)點(diǎn)添加一個(gè)名為“tem”的臨時(shí)節(jié)點(diǎn)。該條代碼的作用僅僅是為了“+”的顯示而已。四、任務(wù)實(shí)施:1、打開(kāi)任務(wù)一中建立的窗體應(yīng)用程序,在代碼文件中加入如下方法,用于顯示電腦的邏輯盤符。voidBindLogicDrive(){//顯示邏輯盤符

inti=0;//遍歷所有電腦盤符

foreach(stringdiskinDirectory.GetLogicalDrives()){//添加所有邏輯盤符作為樹(shù)控件中根節(jié)點(diǎn)的子節(jié)點(diǎn)

treeDirectory.Nodes[0].Nodes.Add(disk);//為邏輯盤添加圖標(biāo)

treeDirectory.Nodes[0].Nodes[i].ImageIndex=2;//添加節(jié)點(diǎn)被選中的圖標(biāo)

treeDirectory.Nodes[0].Nodes[i].SelectedImageIndex=2;//檢查當(dāng)前節(jié)點(diǎn)是否還有子節(jié)點(diǎn),

DetectSub(treeDirectory.Nodes[0].Nodes[i]);i++;}}四、任務(wù)實(shí)施:2、添加方法stringGetPath(TreeNodenode),用獲取某樹(shù)節(jié)點(diǎn)node所代表的文件目錄路徑。//獲取節(jié)點(diǎn)路徑stringGetPath(TreeNodenode){//用root表示根節(jié)點(diǎn)(我的電腦)TreeNoderoot=treeDirectory.Nodes[0];stringpath="";//如果不是根節(jié)點(diǎn)

while(node!=root){//node.Text為節(jié)點(diǎn)顯示出來(lái)的文本if(node.Text.IndexOf(":")>0){path=node.Text+path;}else{path=node.Text+"\\"+path;

}node=node.Parent;}returnpath;//返回節(jié)點(diǎn)所代表的路徑}四、任務(wù)實(shí)施:2、添加方法stringGetPath(TreeNodenode),用獲取某樹(shù)節(jié)點(diǎn)node所代表的文件目錄路徑。//node.Text為節(jié)點(diǎn)顯示出來(lái)的文本

if(node.Text.IndexOf(":")>0){path=node.Text+path;}else{path=node.Text+"\\"+path;}node=node.Parent;}returnpath;//返回節(jié)點(diǎn)所代表的路徑

}可以在紙上畫(huà)出樹(shù)形結(jié)構(gòu)以及所代表的文件路徑,然后按步驟自行分析。四、任務(wù)實(shí)施:3、添加方法voidDetectSub(TreeNodenowNode)用于檢測(cè)nowNode節(jié)點(diǎn)下是否有字節(jié)點(diǎn),如果有則顯示“+”,沒(méi)有則不顯示。voidDetectSub(TreeNodenowNode){//獲取當(dāng)前節(jié)點(diǎn)路徑,步驟2中有具體實(shí)現(xiàn)方法

stringpath=GetPath(nowNode);if(path=="")//為最小節(jié)點(diǎn),即葉子節(jié)點(diǎn){return;}//不為最小節(jié)點(diǎn)

else{//創(chuàng)建文件夾對(duì)象dir

DirectoryInfodir=newDirectoryInfo(path);try{//判斷當(dāng)前目錄是否有子目錄if(dir.GetDirectories().Length>0){//添加一個(gè)臨時(shí)節(jié)點(diǎn)作為+顯示nowNode.Nodes.Add("tmp");}catch(Exceptione){;}}}四、任務(wù)實(shí)施:4、為TreeNode控件添加BeforeExpand方法,該方法表示節(jié)點(diǎn)展開(kāi)前。privatevoidtreeDirectory_BeforeExpand(objectsender,TreeViewCancelEventArgse){ViewSub(e.Node);//查看節(jié)點(diǎn)的子節(jié)點(diǎn),在步驟5中實(shí)現(xiàn)

//設(shè)置節(jié)點(diǎn)的圖標(biāo)

if(e.Node.ImageIndex<3){e.Node.ImageIndex=1;}}四、任務(wù)實(shí)施:5、添加voidViewSub(TreeNodenowNode)方法,該方法可以顯示節(jié)點(diǎn)nowNode的所有子節(jié)點(diǎn)。//顯示子目錄

voidViewSub(TreeNodenowNode){stringpath=GetPath(nowNode);//如果當(dāng)前節(jié)點(diǎn)路徑為空

if(path==""){return;}else{//如果當(dāng)前節(jié)點(diǎn)路徑不為空DirectoryInfodir=newDirectoryInfo(path);//創(chuàng)建目錄對(duì)象

inti=0;四、任務(wù)實(shí)施:5、添加voidViewSub(TreeNodenowNode)方法,該方法可以顯示節(jié)點(diǎn)nowNode的所有子節(jié)點(diǎn)。

//清空所有子節(jié)點(diǎn)

nowNode.Nodes.Clear();//遍歷該目錄下面的所有文件foreach(DirectoryInfosubdirindir.GetDirectories()){//把每個(gè)子文件的路徑作為節(jié)點(diǎn)所顯示的文本,同時(shí)加入子節(jié)點(diǎn)到父節(jié)點(diǎn)中

nowNode.Nodes.Add(subdir.Name);DetectSub(nowNode.Nodes[i]);i++;}}}五、任務(wù)小結(jié):相同點(diǎn):均能對(duì)目錄進(jìn)行操作區(qū)別:DirectoryInfo類必須被實(shí)例化后才能使用,而Directory類則只提供了靜態(tài)的方法。如果多次使用某個(gè)對(duì)象一般使用DirectoryInfo類;如果僅執(zhí)行某一個(gè)操作則使用Directory類提供的靜態(tài)方法效率更高一些。1、Directory類和DirectoryInfo類的區(qū)別五、任務(wù)小結(jié):相同點(diǎn):均能對(duì)文件進(jìn)行操作區(qū)別:File是靜態(tài)類,其中所有方法都是靜態(tài)的,可以通過(guò)類名直接調(diào)用,不需要實(shí)例化。而FileInfo是普通類,只有實(shí)例化對(duì)象后才可以調(diào)用其中的方法。如果只是對(duì)文件進(jìn)行少量的操作,如判斷文件是否存在之類或者對(duì)很多的文件進(jìn)行操作,建議使用File類,可以避免頻繁創(chuàng)建和釋放對(duì)象的系統(tǒng)開(kāi)銷。如果是對(duì)一個(gè)文件進(jìn)行大量的操作,建議使用FileInfo類。那么為什么有時(shí)還使用FileInfo呢?因?yàn)槊看瓮ㄟ^(guò)File類調(diào)用某個(gè)方法時(shí),都要占用一定的cpu處理時(shí)間來(lái)進(jìn)行安全檢查,即使使用不同的File類的方法重復(fù)訪問(wèn)同一個(gè)文件時(shí)也是如此。而FileInfo類只在創(chuàng)建FileInfo對(duì)象時(shí)執(zhí)行一次安全檢查。2、File類和FileInfo類的區(qū)別第10章文件

——任務(wù)三顯示文件詳細(xì)信息一、任務(wù)描述:對(duì)任務(wù)二中的“我的資源管理器”窗體進(jìn)行完善,添加方法ViewDetail()使得右邊的ListView控件顯示相應(yīng)節(jié)點(diǎn)目錄下的文件及文件夾的詳細(xì)信息,運(yùn)行如下圖所示。ListView控件中顯示的列包括:名稱、類型、大小和修改時(shí)間。其中文件夾沒(méi)有大小,文件有大小,文件大小單位包括Bytes、KB、MB和GB。二、任務(wù)準(zhǔn)備:1、獲取文件的基本信息可以通過(guò)FileInfo類的各種屬性來(lái)獲取文件的基本信息,具體說(shuō)明如表所示。FileInfo類的屬性表屬

性說(shuō)

明CreateTime獲取文件創(chuàng)建時(shí)間。LastAccessTime獲取上次訪問(wèn)該文件的時(shí)間。LastWriteTime獲取上次寫(xiě)入文件的時(shí)間。Name獲取文件名稱。FullName獲取文件的完整目錄。DirectoryName獲取文件的文章路徑。IsReadOnly獲取文件是否只讀。Length獲取文件長(zhǎng)度(字節(jié))。二、任務(wù)準(zhǔn)備:1、獲取文件的基本信息FileInfofinfo=newnewFileInfo(@"D:\Test.txt");//創(chuàng)建FileInfo對(duì)象stringstrCTime,strLtime,strWTime,strName,strFName,strDName,strISread;//定義字符串存放文件基本信息longlgLen;//存放文件長(zhǎng)度strCTime=finfo.CreationTime.ToshortDataString();//獲取文件創(chuàng)建時(shí)間strLtime=finfo.LasrAccessTime.ToshortDataString();//獲取文件最后訪問(wèn)時(shí)間strWTime=finfo.LastWriteTime.ToshortDataString();//獲取文件最后寫(xiě)入時(shí)間strName=finfo.Name;//獲取文件名稱strFName=finfo.FullName;//獲取文件完整目錄strDName=finfo.DirectoryName;//獲取文件完整路徑strISread=finfo.IsReadOnly;//獲取文件是否只讀lgLen=finfo.Length;//獲取文件長(zhǎng)度舉例:獲取目錄D:\下文件Test.txt的的基本信息。二、任務(wù)準(zhǔn)備:1、獲取文件的基本信息strCTime:2014-03-01strLtime:2014-03-01strWTime:2014-02-21strName:Test.txtstrFName:D:\Test.txtstrDName:D:strISread:falselgLen:867980獲取值為:三、任務(wù)分析:1、如何區(qū)分文件還是文件夾。本任務(wù)中區(qū)分文件還是文件夾的方式是通過(guò)遍歷的時(shí)候同時(shí)實(shí)現(xiàn)的,如下:foreach(DirectoryInfosubdirindir.GetDirectories())遍歷文件夾dir下的所有子文件夾。foreach(FileInfofileindir.GetFiles())遍歷文件夾dir下的所有文件。文件的三、任務(wù)分析:2、如何按照如下單位:Bytes、KB、MB和GB顯示文件的大小。通過(guò)類FileInfo的GetFileSize方法,可以求出文件的大小,但是單位是字節(jié)。在ListView控件中顯示時(shí)需要顯示成其他單位。如果文件的大小為:filesize,則進(jìn)行如下運(yùn)算可以進(jìn)行單位換算:(double)filesize/1024換算成KB(double)filesize/(1024*1024)換算成MB(double)filesize/(1024*1024*1024)換算成GB四、任務(wù)實(shí)施:1、在任務(wù)二的基礎(chǔ)上完善“我的資源管理器”窗體應(yīng)用程序。添加方法privatestringGetFileSize(FileInfofile)用于返回文件的大小。

privatestringGetFileSize(FileInfofile){

stringresult=null;

longfilesize=file.Length;//如果文件大小達(dá)到GBif(filesize>=1024*1024*1024)

{result=string.Format("{0:########0.00}GB",(double)filesize/(1024*1024*1024));}elseif(filesize>=1024*1024)//文件大小達(dá)到MB{result=string.Format("{0:####0.00}MB",(double)filesize/(1024*1024));}四、任務(wù)實(shí)施:1、在任務(wù)二的基礎(chǔ)上完善“我的資源管理器”窗體應(yīng)用程序。添加方法privatestringGetFileSize(FileInfofile)用于返回文件的大小。

elseif(filesize>=1024)//文件大小達(dá)到KB{result=string.Format("{0:####0.00}KB",(double)filesize/1024);}else{result=string.Format("{0}Bytes",filesize);}returnresult;}四、任務(wù)實(shí)施:2、添加方法voidViewDetail(TreeNodenowNode),其作用是讓ListView控件現(xiàn)實(shí)TreeView控件中選中節(jié)點(diǎn)所代表文件夾下包含的子文件和子文件夾的名稱、類型、大小、修改時(shí)間。voidViewDetail(TreeNodenowNode){stringpath=GetPath(nowNode);//選中TreeNode節(jié)點(diǎn)所代表文件的路徑lstDetail.Items.Clear();//清除ListView控件下的所有項(xiàng)if(path==""){//選中為根節(jié)點(diǎn)時(shí),代表“我的電腦”節(jié)點(diǎn)foreach(stringdiskinDirectory.GetL

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論