(一) 察看和顯示目錄下的文件和文件夾 ![]() 1、驅動器列表框是一個下拉式的列表框,他和一般下拉式的列表框的不同僅在于功能上的不同,它提供了一個驅動器的列表。當單擊右邊的箭頭時,則彈出計算機中的所有驅動器的下拉列表。默認狀態下,在驅動器列表中顯示的是當前驅動器,我們可以輸入或從下拉列表中選擇有效的驅動器標示符。 ![]()
![]()
![]() 下表是其中所用到的控件及其屬性設置: 對象特性設置值 窗體名稱Frmvcd BorderStyle1 CaptionVCD播放器 菜單標題文件 名稱Mnufile 標題打開 名稱Mnuopen 標題播放 名稱Mnuplay 標題退出 名稱Mnuexit 標題選項 名稱Mnuoption 標題連續播放 名稱Mnurepeat 標題靜音 名稱Mnuslient 多媒體控件名稱Mmcontrol Picture控件名稱Picture1 通用對話框名稱Commondialog1 下面是主要程序代碼代碼: Private Sub mnuopen_Click() ’當點擊菜單中的打開時執行 '在未選擇文件時,文件名為空字符,播放菜單不可用 mnuplay.Enabled =False CommonDialog1.FileName = "" '下面語句設置文件過濾方式,可顯示擴展名為avi,dat,wav和mid文件 CommonDialog1.Filter = "(*.avi)|*.avi|(*.wave)|*.wav|(vcd *.dat)|*.dat|(midi *.mid)|*.mid" '初始化文件過濾方式為*.avi CommonDialog1.FilterIndex = 1 '建立打開方式的通用對話框,也可使用commondialog1.showopen CommonDialog1.Action = 1 '打開一個文件前先關閉前一次被打開的多媒體設備 MMControl1.Command = "close" Select CommonDialog1.FilterIndex Case 1 '選擇*.avi '設置多媒體設備類型為avividio MMControl1.DeviceType = "avividio" '設置時間格式為幀 MMControl1.TimeFormat = 3 '設置播放的文件為通用對話框中選擇的文件 MMControl1.FileName = CommonDialog1.FileName '打開文件 MMControl1.Command = "open " Case 2 '選擇*.wav '設置多媒體設備類型為waveaudio MMControl1.DeviceType = "waveaudio" '設置時間格式為幀 MMControl1.TimeFormat = 3 '設置播放的文件為通用對話框中選擇的文件 MMControl1.FileName = CommonDialog1.FileName '打開文件 MMControl1.Command = "open " Case 3 '選擇*.dat '設置多媒體設備類型為Mpegvidio MMControl1.DeviceType = "Mpegvidio" '設置時間格式為幀 MMControl1.TimeFormat = 3 '設置播放的文件為通用對話框中選擇的文件 MMControl1.FileName = CommonDialog1.FileName '打開文件 MMControl1.Command = "open " Case 4 '選擇*.mid '設置多媒體設備類型為waveaudio MMControl1.DeviceType = "waveaudio" '設置時間格式為幀 MMControl1.TimeFormat = 3 '設置播放的文件為通用對話框中選擇的文件 MMControl1.FileName = CommonDialog1.FileName '打開文件 MMControl1.Command = "open " End Select '設置hwnddisplay的值,使媒體文件能夠在picture控件中播放 MMControl1.hWndDisplay = Picture1.hWnd End Sub (二)新建、修改、刪除目錄 以上控件除了通用對話框(CommonDialog)之外一般只能顯示當前的目錄結構,對于在磁盤上新建、修改、刪除目錄卻基本無能為力。 我們先來看看通用對話框對文件夾的新建,修改和刪除操作. 1、新建目錄 我們只要在顯示出來的通用對話框的空白位置,單擊鼠標,選擇“新建”即可在指定的路徑下創建新的目錄,或者點擊通用對話框右上角的新建圖表(如下圖所示),也可以在指定的路徑下創建新的目錄 ![]() 2、修改文件夾名稱 可以在顯示出來的通用對話框中,用鼠標右鍵點擊選擇所要修改的文件夾,再彈出的快捷菜單中,選擇重命名,即可修改目錄名稱。如下圖所示: ![]() 3、刪除文件夾 同修改文件夾名稱一樣,我們只要選擇刪除即可。如上圖所示。 而且這種方法比RmDir更簡便,它還可以刪除包含有文件和子文件夾的文件夾。 除了以上控件,windows還給我們提供了一個叫做FileSystemObject(簡稱FSO)對象。FSO對象模型中包括了計算機文件系統所有的對象。見下表。利用這些對象可以更方便的操作文件系統。 對象功能 Drive允許收集系統的驅動器信息,諸如驅動器的可用空間 Folder允許創建、刪除或移動文件夾,并向系統查詢文件夾的名稱、路徑等等 Files允許創建、刪除或移動文件,并向系統查詢文件的名稱、路徑等等 FileSysterObject此為主要對象,提供一整套用于創建、刪除、搜集相關信息,以及通常的操作驅動器,文件夾,和文件的方法。 TextStream允許讀寫文本文件 下面我們一起來看看怎樣用FSO對象來顯示、新建、修改以及刪除目錄。 FSO對象模型包含在Scripting的類型庫中,此類型庫存在于Scrrun.dll文件中.使用FSO對象模型,首先要建立一個FileSystemObject對象。有兩種方法可以實現。一種是從”工程”菜單中的”引用”對話框選擇”Microsoft Scripting Runtime”項,然后在代碼窗口中聲明一個FileSystemObject類型的變量.語句如下: Dim fso As New FileSystemObject 另一種方法是在代碼中使用CreatObject方法動態的創建一個FileSystemObject對象.語句如下: Dim fso As Object ‘ 聲明對象變量 Set fso = CreatObject(“Scripting. FileSystemObject”) ‘創建FSO對象 我們具體看看FileSystemObject的主要屬性. 1、驅動器 (1) Drives屬性是FileSystemObject對象的唯一屬性,它返回Drives集合中所有可用驅動器的只讀集合。對于可刪除的驅動器,不需要將媒體插入其中,就可以在Drives集合中顯示出來。下面是它的主要屬性有兩個:一個是Count,另一個是Item.Count屬性返回Drives集合或Dictionary對象中的條目數.Item屬性用來返回或設置Drives集合或Dictionary對象中與指定關鍵字相關的項目. 下面代碼說明了如何獲得Drives集合,以及如何用For Eacn……Next語句來訪問該集合中的每個Drive: Sub ShowDriveList() Dim fs As Object, d, dc, s,n 創建文件系統對象 Set fs = CreatObject(“Scripting. FileSystemObject”) 創建驅動器集合 Set dc= fs.Drives '取的驅動器對象 For Each d in dc s = s & d.DriveLetter & “-” ‘格式化文本 If d.DriverType = Remote Then ‘如果是Remote類型的驅動器 n = d.ShareName ‘取得它的共享名 Else n = d.volumeName ‘否則取得它的卷標 End if s= s& n & vbCrLf ‘格式化文本 Next MsgBox s ‘顯示文本 End sub (2) 當然我們也可以用Drive對象.Drive對象提供了對磁盤驅動器或網絡共享屬性的訪問方法.下面是它的主要屬性及其解釋: Availablespace驅動器已用空間DriveLetter驅動器指定的字母 Freespace驅動器剩余空間DriverType驅動器類型 TotalSize驅動器全部空間FileSystem驅動器文件系統 IsReady驅動器是否已準備Path驅動器根目錄 SerizlNumber驅動器序列號VolumeName驅動器卷標 ShareName驅動器共享名 主要的方法就是GetDrive,此方法用來訪問一個已有的驅動器,該方法返回一個與指定路徑中的驅動器相對應的Drive對象。下面的代碼中,我們將說明怎樣取得一個指定的驅動器的相關信息: Sub ShowFreeSpace(drvPath) ‘顯示指定目錄下的驅動器的信息 Dim fs As Object, d, s Set fs = CreateObject("Scripting.FileSystemObject") ‘創建文件系統對象 Set d = fs.GetDrive(fs.GetDriveName(drvPath)) ‘創建并得到指定取目錄下的驅動器 s = "Drive" & UCase(drvPath) & "-" ‘格式化文本 s = s & d.VolumeName & vbCrLf ‘得到驅動器的卷標 s = s & "FreeSpace:" & FormatNumber(d.FreeSpace / 1024, 0) '計算驅動器的剩余磁盤空間 s = s & "Kbytes" MsgBox s ‘顯示 End Sub 下面是filesystemobject的其他方法 CreateFolder該方法的作用是創建一個文件夾。所要創建的文件夾必須是不存在的,否則出錯。 CreateTextFile該方法的作用是產生一個指定的文件名,并返回一個TextStream對象,該對象可被用于對指定的文件進行讀寫。如果overwrite參數為False或未指定,對于一個已存在的文件,將產生錯誤。 DeleteFile該方法的作用是刪除一個指定的文件。如果指定的文件不存在,則出錯。 DeleteFolder該方法的作用是刪除一個文件夾及其內容。如果沒有發現匹配的文件夾則出錯。該方法不能確定文件夾中是否包含內容。 DriveExists該方法的作用是用來確定驅動器是否存在。如果指定的驅動器存在,則返回True,否則返回False。但對于可刪除介質的驅動器,即使沒有介質存在,DriveExists方法也返回True,因此最好使用IsReady屬性確定驅動器是否準備就緒。 FileExists該方法的作用是判斷指定的文件對象是否存在于當前文件夾 FolderExists該方法的作用是判斷指定的文件夾對象是否存在于當前文件夾 GetDrive該方法的作用是返回一個在指定路徑中的與某個驅動器相對應的Drive對象。對于網絡驅動器,將首先檢查該共享是否存在。 GerDriveName該方法的作用是返回包括某一指定路徑上的驅動器名的字符串。如果驅動器不能確定,則返回一個0長度字符串。該方法只對指定的路徑起作用,它并不試圖解析路徑,也不檢查指定路徑是否存在。 GetExtensionName該方法的作用是返回指定路徑中最后一個組成部分的擴展名。 GetFile該方法的作用是返回指定路徑中與某一文件相關的File對象。一定要保證所指定的文件是實際存在的。否則將產生錯誤。 GetFileName該方法的作用是返回指定路徑的最后一個組成部分的文件名。 GetFolder該方法的作用是返回指定路徑上的與某個文件夾相關的Folder對象.要保證指定的文件夾是實際存在的,否則會出錯. 使用Folder對象的第一部就是先用FileSystemObjectd的GetFolder方法得到Folder對象 GetParentFolderName該方法的作用是返回一個包含指定路徑上的最后一個組成部分的父文件夾的名稱。 MoveFile該方法的作用是將一個或多個文件從一個地方移動到另一個地方。 MoveFolder該方法的作用是移動一個或多個文件夾,如果源路徑包含通配符,或目的路徑以斜杠()為結束,則表明目的路徑為已存在的路徑,在此文件夾中移動相匹配的文件夾.否則,認為目的路徑是一個要創建的目標文件夾的名字.如果目的路徑為一個已存在的文件或目的路徑為一個目錄,則出錯.如果沒有任何文件與源路徑中的通配符相匹配也出錯. OpenTextFile該方法可用來打開一個指定的文件,并返回一個TextStream對象。用于讀文件或追加文件。 2、文件夾 對文件夾的操作,我們可以使用folder對象,它提供了對文件夾所有屬性和方法的訪問.下表市對其主要屬性的解釋: DateCreated返回指定文件或文件夾的創建日期和時間 DateLastAccessed返回最后一次訪問指定文件或文件夾的日期和時間 Drive返回指定文件或文件夾所在的驅動器符號 Files返回由File對象組成的所有Files集合,這些Files集合包含在指定的文件夾中,包括設置了隱藏和系統文件屬性的那些文件夾 IsRootFolder如果指定的文件夾是根文件夾,則返回True,否則返回False Name設置或返回指定文件或文件夾的名稱 ParentFolder返回指定文件或文件夾的父文件夾的Folder對象 Path返回指定文件、文件夾或驅動器的路徑 ShortName返回較早的需要8.3文件命名約定的程序所使用的短文件名 ShortPath返回較早的需要8.3文件命名約定的程序所使用的短路徑 Size對文件來說,本屬性返回以字節為單位的文件大小;對文件夾來說,返回以字節為單位包括其中所有文件或子文件夾的大小 SubFolders返回包含所有文件夾的一個Folders集合,這些文件夾包含在某個特定文件夾中, 包括設置了隱藏和系統文件屬性的那些文件夾 Type返回指定文件或文件夾的類型信息. 使用Folder對象的第一部就是先用FileSystemObjectd的GetFolder方法得到Folder對象, 該方法的作用是返回指定路徑上的與某個文件夾相關的Folder對象.要保證指定的文件夾是實際存在的,否則會出錯. 讓我們來看一看其中的各種屬性及其用法吧. (1)Attributes屬性可以返回文件或文件夾的屬性,或者設置他們的新屬性.所設屬性可以是以下值中任意一個或多個的邏輯組合. 常數值說明 Normal0為一般文件,不設置屬性 ReadOnly1為只讀文件,屬性為讀/寫 Hidden2為隱藏文件,屬性為讀/寫 System 4為系統文件,屬性為讀/寫 Volume8為磁盤驅動器卷標,屬性為只讀 Directory16為文件夾或目錄,屬性為只讀 Archive32在上次備份后已經改變的文件,屬性為讀/寫 Alias64為鏈接或快捷方式,屬性為只讀 Compressed128為壓縮文件,屬性為只讀 (2)DateCreated屬性返回指定文件或文件夾的創建日期和時間,本屬性為只讀屬性. 下面是用法: Sub ShowFolderList( folderspec ) ‘folderspec 為文件夾名稱 Dim fs , f, f1,fc , s Set fs = CreateObject(“Scripting.FileSystemObject”) Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夾相關的folder對象 Set fc = f.SubFolders ‘得到folder對象所包含的文件夾的folder集合 For Each fi in fc ‘訪問folder集合中的每一個folder s= s & f1.name ‘格式化要顯示的文本 s= s & vbCrLf Next MsgBox s ‘用對話框顯示信息 End Sub (3)DateLastModified屬性用來返回最后一次修改指定文件或文件夾的日期和時間,本屬性為只讀. 下面代碼用一個文件舉例說明了DataLastModified屬性的用法: Sub ShowFileAccessInfo(filespec) Dim fs,f,s Set fs = CreateObject(“Scripting.FileSystemObject”) Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夾相關的folder對象 s= Ucase(filespec) & vbCrLf s= s& “Created:” & f.DateCreate & vbCrLf s= s & “Last Accessed :” & f.DateLastAccessed & vbCrLf s= s & “Last Modifide :” & f.DateLastModified MsgBox s, 0,”File Access Info” End Sub (4)Type屬性返回關于某個文件或文件夾類型的信息.例如對于以.TXT結尾的文本文件來說,本屬性會返回”Text Document”.下面的代碼舉例說明了返回某個文件夾類型的Type屬性的用法.在這個示例中,試圖將Recycle Bin的路徑或其他唯一的文件夾提供給過程. Sub ShowFileSize( filespec ) Dim fs,f,s Set fs = CreateObject(“Scripting.FileSystemObject”) Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夾相關的folder對象 S = Ucase(f.Name) & “is a ” & f.Type ‘格式化文本 MsgBox s,o, “File Size Info ” ‘顯示信息 End Sub 主要方法有: (1)Copy方法: 該方法的作用是拷貝一個指定的文件或文件夾到指定的目錄.該方法和FileSystemObject.CopyFile方法的作用相同 (2)CreateTextFile方法: 該方法的作用是產生一個指定的文件名,并返回一個TextStream對象,該對象可被用于對指定的文件進行讀寫.如果overwrite參數為False或未指定,對于一個已存在的文件,將產生錯誤. (3)Delete方法: 該方法的作用是刪除一個指定的文件或文件夾.如果指定的文件或文件夾不存在,則發生一個錯誤.對于一個File或Folder來說,Delete方法的運行的結果和執行FileSystemObject.DeleteFile或FileSystemObject.DeleteFolder的結果是一樣的.Delete方法執行時與指定的文件夾中時候有內容無關. (4)Move 該方法用來將一個指定的文件夾或文件從一個地方移動到另一個地方,如果只是想移動一個文件或文件夾,則使用Move方法和使用FileSystemObject.MoveFile或FileSystemObject.MoveFolder操作的結果是一樣的,但是如果要同時移動多個文件或文件夾,則只能使用后者。 講了這么多,還是讓我們來看一下具體的實現方法: 1、 創建一個文件夾 可以使用FileSystemObject對象的CreateFolder方法來實現,但要創建的文件夾必須不存在,否則出錯。特別注意,FileSystemObject對象不能創建或刪除驅動器。 下面的例子可以在應用程序所在目錄下創建一個文件夾 Sub CreateFolder(folderspec) Dim fs Set fs = CreatObject(“Scripting.FileSystemObject”) fs.CreaterFolder(folderspec ) End sub 2、 刪除一個或多個文件夾 可以使用FileSystemObject對象的Deletfolder方法,或者folder對象的Delete方法 Sub DeleteFolder(folderspec) Dim fs Set fs = CreatObject(“Scripting.FileSystemObject”) fs.DeleteFolder(folderspec & “100”) ‘Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夾相關的folder對象 ‘f.Delete End sub 3、移動一個或多個文件夾 可以使用FileSystemObject對象的Movefolder方法,或者folder對象的Move方法 Sub MoveFolder(folderspec) Dim fs Set fs = CreatObject(“Scripting.FileSystemObject”) fs.MoveFolder(folderspec , “c:windows”) ‘Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夾相關的folder對象 ‘f.Move(“c:windows”) End sub 4、一個或多個文件夾 可以使用FileSystemObject對象的Copyfolder方法,或者folder對象的Copy方法。 Sub CopyFolder(folderspec) Dim fs Set fs = CreatObject(“Scripting.FileSystemObject”) fs.CopyFolder(folderspec , “c:windows”) ‘Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夾相關的folder對象 ‘f.Copy(“c:windows”) End sub |
溫馨提示:喜歡本站的話,請收藏一下本站!