《C#語言程序設計項目教程》第10章 文 件寫字字帖_第1頁
《C#語言程序設計項目教程》第10章 文 件寫字字帖_第2頁
《C#語言程序設計項目教程》第10章 文 件寫字字帖_第3頁
《C#語言程序設計項目教程》第10章 文 件寫字字帖_第4頁
《C#語言程序設計項目教程》第10章 文 件寫字字帖_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

——任務二顯示電腦邏輯磁盤符號

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

法說

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

性說

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

員說

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

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

法說

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

性說

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//設置節(jié)點的圖標

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

voidViewSub(TreeNodenowNode){stringpath=GetPath(nowNode);//如果當前節(jié)點路徑為空

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

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

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

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

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

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

性說

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

privatestringGetFileSize(FileInfofile){

stringresult=null;

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

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

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

溫馨提示

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

評論

0/150

提交評論