截取部分文件的VB編程技巧

發表于:2007-07-14來源:作者:點擊數: 標簽:
截取文件的一部分方法很多,有的用分割工具軟件,有的ARJ等壓縮軟件實現。本文介紹用編程方法來實現。在VB環境中,完全可以利用VB自身提供的命令和函數,提
  截取文件的一部分方法很多,有的用分割工具軟件,有的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 Aclearcase/" target="_blank" >ccess 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.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97