• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在VB中使用文件對象

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網 作 者 : 揚眉

       自從Visual Basic第一次發布到現在,它的大部分主要的特性大都被修改了不下一次。但文件操作部分卻是個例外。在最原始的Basic語言中,文件就是用文件號(file number)來讀寫的。用一個數字來操作文件,或許者多少有一點晦澀難懂,這也令大多數的初學者感到不習慣和難以理解。  

       隨著Visual Basic Scripting Edition2.0版本的發布,微軟提供了一種全新的文件操作方法——文件系統對象(FileSystemObject)。用對象編程,這正是開發者們所希望用到。這個對象,包括一些其他的相關對象,封裝了所有的文件操作。這篇文章將向你介紹這些對象,并且展示如何利用它們來編程。要使用這些對象,在VB的應用程序中就必須引用Microsoft Scripting Runtime (C:\Windows\System\SCRRUN.DLL)對象庫。但是如果是為Inte.net Explore 編寫VBScript,直接使用就可以了。下面是這些對象的概要:  

       * Drive - 代表一個單獨的驅動器,可以是軟驅,硬盤,或者是光驅等其他存貯介質。  

       * Drives - 一個集合對象,包括系統中所有的驅動器。  

       * File - 代表系統中的一個磁盤文件。  

       * Files - 集合對象,是一些文件的集合。典型的是代表一個目錄下的所有文件。  

       * FileSystemObject - 代表系統中整個文件系統的對象。包括所有驅動器,目錄和文件。  

       * Folder - 代表一個目錄,可以是本地的,也可以是遠程目錄。  

       * Folders - 一些目錄的集合體。  

       * TextStream - 文本流對象,代表一個用來讀寫的打開的文件。  

       想得到系統中所有的驅動器的信息,可以用下面的這段代碼來實現。  
    Sub Main()
    Dim objFSO As New Scripting.FileSystemObject
    Dim drvLoop As Scripting.Drive

    For Each drvLoop In objFSO.Drives
    Debug.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 performing 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函數來實現同樣的功能,那么你一定會感到用對象編程的方便之處。不論你是想檢查文件屬性,還是創建新的文件,或者其它任何關于文件的操作,新的文件對象都會為你節省不少時間,而且是代碼更加易于理解。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>