• <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 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 15次 | 進入軟件測試論壇討論

    領測軟件測試網   截取文件的一部分方法很多,有的用分割工具軟件,有的ARJ等壓縮軟件實現。本文介紹用編程方法來實現。在VB環境中,完全可以利用VB自身提供的命令和函數,提取、分割任何文件,定位準確、速度快。思路及重點如下:

      1)因VB的OPEN語句的二進制方式可以讀寫有任意結構的文件,把源文件和截取的目標文件作為二進制方式讀出和寫入;

      2)GET語句語法為:。牵牛裕#荚次募枺,<起始位置>,<變量>利用GET語句提供的起始位置可以對源文件讀的位置進行控制;

      3)把每次讀取字節的長度放于字節變量數組中,以提高程序速度;

      4)若需截取的目標文件較大,應把源文件需讀的內容分成一個個讀寫塊(注:目標文件仍只有一個),每一讀寫塊內容放入字節數組中,讀寫塊未完部分須對字節數組的上下標進行重新設置,以便讀寫。

     源程序如下:
     

      Dim TargetFileLength, StartLength As Long

      注釋:目標文件長度及在源文件中的開始長度

      Dim SourceFileName, TargetFileName As String

      注釋:源文件全路徑名和目標文件全路徑名

      Dim ReadPos, WritePos As Long 注釋:讀寫位置

      Dim DSX() As Byte

      注釋:為字節數組,用來存儲讀寫內容

      Dim ReadFileNo, WriteFileNo As Integer

      注釋:讀寫文件號

      Const Unit = 100000

      注釋:讀寫塊的大小

      StartLength = InputBox("輸入目標文件在源文件中的開始長度")

      注釋:此值也可以通過其它方式獲取

      TargetFileLength = InputBox("輸入目標文件長度")

      注釋:1)同上;

      注釋:2)或由目標文件在源文件中的結束長度轉換而來;

      注釋:3)該值在讀寫過程中是個變數

      SourceFileName = InputBox("輸入源文件名")

      TargetFileName = InputBox("輸入目標文件名")

      ReadFileNo = FreeFile

      Open SourceFileName For Binary Access Read As ReadFileNo

      注釋:打開欲截取的源文件名

      WriteFileNo = FreeFile

      Open TargetFileName For Binary Access Write As WriteFileNo

      注釋:欲打開的目標文件名

      ReadPos = 1: WritePos = 1

      ReadPos = ReadPos + StartLength

      注釋:給讀寫位置賦初值


      注釋:以下部分讀出寫入讀寫塊的整數部分

      ReDim DSX(Unit) As Byte

      注釋:設置存儲字節數組的大小

      Do While TargetFileLength > Unit

      注釋:TargetFileLength為變數,反映讀寫過程中還剩的字節數

      Get #ReadFileNo, ReadPos, DSX()

      Put #WriteFileNo, WritePos, DSX()

      ReadPos = ReadPos + Unit

      WritePos = WritePos + Unit

      TargetFileLength = TargetFileLength - Unit

      Loop


      注釋:以下讀寫除讀寫塊倍數后的剩余部分

      ReDim DSX(TargetFileLength) As Byte

      Get #ReadFileNo, ReadPos, DSX()

      Put #WriteFileNo, WritePos, DSX()


      Close WriteFileNo, ReadFileNo



      說明:1、對源文件和目標文件較大時,對Unit 的取值比較考究。Unit的取值視機器配置而定,筆者的機型為6X86PR200+,取Unit=100,000,000 到5,000,000,000;依筆者之見,在時間接近的情況下,為了減少資源的占用應盡量取下限。

      。、本程序稍作改寫,可作為過程被其它VB程序的調用。

      。、本程序的測試環境為Visual Basic5.0中文版,Windows95系統下通過。

    延伸閱讀

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


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