在VB中使用檔案物件 (轉)
在VB中使用
綱要
隨著 Scripting Edition2.0版本的釋出,提供了一種全新的檔案操作方法——檔案物件(FileSystem)。用物件,這正是開發者們所希望用到。這個物件,包括一些其它的相關物件,封裝了所有的檔案操作。這篇文章將向你介紹這些物件,並且展示如何利用它們來程式設計。
正文
在VB中使用檔案物件
作 者 : 揚眉
自從Visual Basic第一次釋出到現在,它的大部分主要的特性大都被修改了不下一次。但檔案操作部分卻是個例外。在最原始的Basic語言中,檔案就是用檔案號(file number)來讀寫的。用一個數字來操作檔案,或許者多少有一點晦澀難懂,這也令大多數的初學者感到不習慣和難以理解。
隨著Visual Basic Scripting Edition2.0版本的釋出,微軟提供了一種全新的檔案操作方法——檔案系統物件(FileSystemObject)。用物件程式設計,這正是開發者們所希望用到。這個物件,包括一些其他的相關物件,封裝了所有的檔案操作。這篇文章將向你介紹這些物件,並且展示如何利用它們來程式設計。 要使用這些物件,在VB的應用中就必須引用 Scripting Runtime (C:SystemSCRRUN.DLL)物件庫。但是如果是為Inte Explore 編寫,直接使用就可以了。下面是這些物件的概要:
* Drive - 代表一個單獨的器,可以是軟碟機,,或者是等其他存貯介質。
* Drives - 一個集合物件,包括系統中所有的驅動器。
* File - 代表系統中的一個檔案。
* Files - 集合物件,是一些檔案的集合。典型的是代表一個目錄下的所有檔案。
* FileSystemObject - 代表系統中整個檔案系統的物件。包括所有驅動器,目錄和檔案。
* Folder - 代表一個目錄,可以是本地的,也可以是目錄。
* Folders - 一些目錄的集合體。
* TextStream - 文字流物件,代表一個用來讀寫的開啟的檔案。
想得到系統中所有的驅動器的資訊,可以用下面的這段程式碼來實現。
Sub Main()
Dim obj As New Scripting.FileSystemObject
Dim drvL As Scripting.Drive
For Each drvLoop In objFSO.Drives
De.Print drvLoop.DriveLetter & ":"
If drvLoop.DriveType = Fixed _
Or drvLoop.IsReady Then
Debug.Print " Total size: " _
& Format$(drvLoop.TotalSize / (1024 ^ 2), "#0.00 Mb")
Debug.Print " Free space: " _
& Format$(drvLoop.FreeSpace / (1024 ^ 2), "#0.00 Mb")
Debug.Print " Volume Label: " & drvLoop.VolumeName
Else
Debug.Print " Disk information unavailable"
End If
Next drvLoop
Set objFSO = Nothing
End Sub
在試圖存取像,光碟這些可移動介質驅動器,特別是存取筆記本的可驅動器的時候要注意:Windows總是認為驅動器是存在的,而不管是否真的有碟片在裡面。這時候可以用Drive物件IsReady物件來檢測驅動器是否準備好。否則可能造成VB應用程式的死鎖。
Drive物件還有一些其他的屬性,可以用物件來察看它所有屬性。
除了可以遍歷所有的驅動器,你也可以遍歷某個資料夾下的所有檔案。這在當你需要在整個驅動器中查詢特定的檔案的時候特別有用。Recursion is also very helpful in these cases since you need to keep perfong the same action as you work your way down the tree. 下面這段程式碼用來統計所有GIF檔案的個數。它也可以很容易的修改成檔案列表,對特定的檔案做指定的操作,等等。其中的關鍵在於目錄數的遍歷:
Option Explicit
Dim m_lngFileCount As Long '定義計數器
Dim m_objFSO As Scripting.FileSystemObject '定義檔案系統物件
Sub Main()
Set m_objFSO = New Scripting.FileSystemObject
m_lngFileCount = 0
CheckFolder "C:"
Debug.Print "C盤下GIF檔案總數: " & m_lngFileCount
End Sub
Sub CheckFolder(strPath As String)
Dim objFolder As Scripting.Folder '資料夾物件
Dim objFile As Scripting.File '檔案物件
Dim objSubdirs As Scripting.Folders '資料夾集合物件
Dim objLoopFolder As Scripting.Folder '資料夾物件
Debug.Print "Checking directory " & strPath
Set objFolder = m_objFSO.GetFolder(strPath)
' 檢查目錄中的檔案
For Each objFile In objFolder.Files
If UCase$(Right$(objFile.ShortPath, 4)) = ".GIF" Then
'這一段是條件檢查,但找到的檔案是否符合給定的條件,這兒透過取檔名的
'最後4位看是不是“.GIF“來判斷檔案是否是GIF檔案。
m_lngFileCount = m_lngFileCount + 1
'找到指定條件的檔案後進行相應的操作,這兒是把計數器加一。
End If
Next objFile
' 在所有子目錄中迴圈,計數。
Set objSubdirs = objFolder.SubFolders
For Each objLoopFolder In objSubdirs
CheckFolder objLoopFolder.Path
'遞迴CheckFolder子過程,實現目錄樹的遍歷。
Next objLoopFolder
Set objSubdirs = Nothing
Set objFolder = Nothing
End Sub
為了簡化這段程式碼,FileSystemObject物件和檔案計數器都被定義為這個模組的全域性變數(因此前面都加了m_字首)。CheckFolder 子程式開始時用C: 作為入口引數,一旦找到一個符合條件的檔案,就把計數值加一。檢查完下面的所有檔案後,再用其子目錄作為引數呼叫CheckFolder過程本身。當所有的目錄都被作為引數呼叫了之後,所有的檔案也就被檢查完了。這就是用遞迴遍歷目錄樹的方法。所謂遞迴,就是過程直接或者間接的呼叫自身。最後,作為過程呼叫的結果,統計數字被Main過程顯示出來。
只要把檢驗檔案是否為GIF檔案的部分換成其它的條件,再把計數的語句換成想要的語句塊。每當找到符合條件的語句後,就會執行這個語句塊。這樣就可以很容易的把程式碼修改用於其它的用途。
如果你曾今用過Dir來實現同樣的功能,那麼你一定會感到用物件程式設計的方便之處。不論你是想檢查檔案屬性,還是建立新的檔案,或者其它任何關於檔案的操作,新的檔案物件都會為你節省不少時間,而且是程式碼更加易於理解。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987231/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在VB和Web頁面中使用Shell物件 (轉)Web物件
- VB中檔案操作的兩種方式 (轉)
- 在VB中實現任意檔案的16進位制方式察看 (轉)
- 在VB應用程式中使用INI檔案的一點體會 (轉)
- VB.NET中物件的克隆 (轉)物件
- Vb下呼叫Help檔案 (轉)
- VB讀寫ini檔案 (轉)
- 使用XmlTextWriter物件建立XML檔案 (轉)XML物件
- 在 VB 中使用 Unicode API (轉)UnicodeAPI
- 在VB.Net中建立使用控制元件陣列 (轉)控制元件陣列
- 在ASP檔案中呼叫DLL (轉)
- 在VB.NET中尋找App (轉)APP
- VB中使用系統登錄檔 (轉)
- 在VB中使用API關閉視窗 (轉)API
- DLL檔案中Form的使用 (轉)ORM
- 在ORACLE中移動資料庫檔案在(轉)Oracle資料庫
- VB.NET中的物件導向程式設計特徵 (轉)物件程式設計特徵
- VB6.0使用ADO物件連線資料庫: (轉)物件資料庫
- Java中使用Fastjson將JSON檔案轉物件JavaASTJSON物件
- 中轉檔案
- C# / VB.NET 在Word中嵌入多媒體(視訊、音訊)檔案C#音訊
- 在JavaScript中建立新物件(轉)JavaScript物件
- C#/VB.NET 在PDF中新增檔案包(Portfolio)C#
- 在VB中實現窗體的動態效果 (轉)
- 在ORACLE中移動資料庫檔案(轉)Oracle資料庫
- 在linux中使用 Pandoc 轉換檔案技巧Linux
- 提升 UNIX 中檔案系統使用效率(轉)
- 在VB中編輯資料庫和電子表格 (轉)資料庫
- 再談在VB中呼叫VC++開發的DLL (轉)C++
- 元件使用總結:使用 JAXB 實現 XML檔案和java物件互轉元件XMLJava物件
- VB程式設計獲取檔案中整合的圖示程式設計
- 在RedHatLinux中使用共享物件(轉)RedhatLinux物件
- 在網頁中使用realplayer播放rm檔案 (轉)網頁
- VB原始碼推薦:一個操作Ini檔案的類 (轉)原始碼
- VB.NET 讀寫ini檔案
- 在VB6.0中實現動態統計報表 (轉)
- 在Oracle中存取BLOB物件實現檔案的上傳和下載Oracle物件
- vb向資料庫中讀取單個圖片檔案資料庫