分享
 
 
 

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

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

截取文件的一部分方法很多,有的用分割工具软件,有的ARJ等压缩软件实现。本文介绍用编程方法来实现。在VB环境中,完全可以利用VB自身提供的命令和函数,提取、分割任何文件,定位准确、速度快。思路及重点如下:

1)因VB的OPEN语句的二进制方式可以读写有任意结构的文件,把源文件和截取的目标文件作为二进制方式读出和写入;

2)GET语句语法为: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;依笔者之见,在时间接近的情况下,为了减少资源的占用应尽量取下限。

2、本程序稍作改写,可作为过程被其它VB程序的调用。

3、本程序的测试环境为Visual Basic5.0中文版,Windows95系统下通过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有