`
free_bird816
  • 浏览: 198256 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

VB中文件操作的两种方式

    博客分类:
  • vb
阅读更多

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:<a href=" /?>



1.文本文件的操作
 

此种方式是以行为单位进行读取的基本单位,主要应用的方法和函数有Open,Close,Line Input,FreeFile,EOF等。下面先简述其功能然后结合代码示例进行说明。

Open:顾名思义,它的作用是打开文件,换而言之打开某个文件就是获得某个的控制权,一般情况下当文件处于打开状态时只有打开者才能对它进行操作。打开文件时要指定一个整数作为文件号,以后的操作都是针对这个代号进行的,而不是针对文件名。文件号也叫句柄,在程序中一个文件号只能指向一个文件,不能出现两个文件同时具有相同句柄的情况。

Close:关闭文件,即释放文件的控制权。

Line Input:以行为单位取得文件内容,以行为单位是指从当前位置开始到下一个换行符为止的内容。换行符是Chr(13) & Chr(10)两个字节组成,VB中已定义了常量vbCrLf,可直接使用。要注意的是Line Input读取一行时会把行尾的换行符去掉,因此我们在读取每行内容时要记得补上换行符才能保持得到的内容与文件一致。

FreeFile:得到空闲的文件号,用这个函数取得文件号可以避免文件号的冲突。

例如:

     Dim strFileName As String '文件名 
    
Dim  lngHandle  As   Long   ' 文件句柄 
    
Dim  strAll  As   String   ' 所读取的文本文件的所有内容 
    
Dim  strLine  As   String   ' 在循环中存放每行的内容 
    
    strFileName 
=   " c:\b.txt " 
    
' 获得文件的句柄 
    lngHandle 
=  FreeFile()

    
' For后面的参数表示以何种方式打开文件,Input是读取,Output是覆盖写入,Append是追加写入 
    Open strFileName 
For  Input  As  lngHandle

    
' 循环直到文件尾 
    
Do   While   Not  EOF(lngHandle)
        
' 每次读取一行存放在strLine变量中 
        Line Input #lngHandle, strLine
        
' 每次读取都把所读到的内容连接到strAll变量,由于Line Input去掉了换行符,所以这里补上 
        strAll 
=  strAll  &  strLine  &  vbCrLf
    
Loop 

    
' 显示得到的全部分内容
MsgBox  strAll, vbInformation

 
    对文本文件的写入相对简单些,有三个步骤:打开文件,写入文本,关闭文件。

代码示例:

    
Dim  strFileName  As   String   ' 文件名 
    
Dim  lngHandle  As   Long   ' 句柄 
    
Dim  strWrite  As   String   ' 要写入的文本内容 

    strFileName 
=   " c:\w.txt " 
    lngHandle 
=  FreeFile()  ' 取得句柄 

    
' 准备要写入的内容 
    strWrite 
=   " 落日楼头,断鸿声里,江南游子。把吴钩看了,栏干拍遍,无人会、登临意。 "   
    Open strFileName 
For  Output  As  lngHandle     ' 打开文件 
    Print #lngHandle, strWrite    
' 写入文本 
    Close lngHandle    
' 关闭文件 
MsgBox   " 写入完成。 " , vbInformation

常用到的一个函数,用来写日志用:

Sub  setLog(str  As   String )
' ---------
'
写日志
'
---------
Open App.Path 
&   " \log\ "   &   CStr ( Date &   " _log.txt "   For  Append  As  # 1
Write #
1 , str
Close #
1
End Sub


二进制文件的操作
 

    所有文件的存储其实质都是二进制的,二进制文件往往由两部分组成,一部分是文件头另一部分存放了文件的内容。文件头通常存放与文件格式有关的信息,以BMP等图象文件为例,它们的文件头中存放了是何种图形格式、图象大小、调色板等信息,要显示图象时先读取文件头以获得文件的详细信息,然后再按其格式把图象内容显示出来。用二进制方式可以操作任何的文件,当然至关重要的一点是要清楚了解所操作文件的文件头结构。

   

    VB中二进制文件操作主要应用的方法和函数有:Open,Close,Get,Put等。

Open:在For后面的打开模式要用Binary。

Close:关闭文件。

Get:在指定位置取得文件的内容,如果省略位置则从当前位置读取。

Put:在指定位置写入文件,如果省略位置参数就从当前位置写。

    下面结合代码讲解二进制文件的操作。

下述程序完成了将两个文件结合成一个文件以及将这个结合后的文件再拆分成原来的两个文件。文件头的结构是自己定义的,非常简单,共8个字节(也就是两个长整型的长度),前4个字节存放第一个文件的长度,后4个字节存放第二个文件的长度。为了更直观地表达文件的结构,现假设有两个文件,第一个文件长度是100字节,第二个文件是200字节,那么合并后得到的文件应该是308字节。按顺序来看,文件的结构是:

4第一文件的长度

4第二文件的长度

100第一文件的二进制内容

200第二文件的二进制内容

除了文件头的8字节长度是固定的后面的长度都会因文件的不同而变化的。

‘实现文件的合并

 

Private   Sub  MergeFile()

    
Dim  strFileName1  As   String   ' 第一个文件 
    
Dim  strFileName2  As   String   ' 第二个文件 
    
Dim  strOutput  As   String   ' 合并后的文件 
    
Dim  aryContent()  As   Byte   ' 用来读取文件的数组,每次读取前要重定义 
   
    strFileName1 
=   " c:\a.bmp " 
    strFileName2 
=   " c:\b.bmp " 
    strOutput 
=   " c:\out.bmp " 

    
' 注意下面三个Open语句都是用Binary模式打开的 
    Open strOutput 
For  Binary  As  # 100    
    Open strFileName1 
For  Binary  As  # 1 
    Open strFileName2 
For  Binary  As  # 2 

    Put #
100 , , LOF( 1 ' 取得第一文件的长度,并把它写入到合并文件的文件头中 
    Put #
100 , , LOF( 2 ' 取得第二文件的长度,并写入到合并文件的文件头中 

    
ReDim  aryContent(LOF( 1 -   1 ' 重定义数组,为读取文件做准备 
    
Get  # 1 , , aryContent()  ' 取得第一文件的内容到数组 

    Put #
100 , , aryContent()  ' 把第一文件的内容写到合并文件中 

    
ReDim  aryContent(LOF( 2 -   1 )

    
Get  # 2 , , aryContent()
    Put #
100 , , aryContent()

    
' 关闭文件 
    Close #

    Close #

    Close #
100
End Sub
实现文件的拆分
Private   Sub  SplitFile()

    
Dim  strFileName1  As   String 
    
Dim  strFileName2  As   String 
    
Dim  strFileSplit  As   String 
    
Dim  aryContent()  As   Byte 
    
Dim  lngLOF( 1 As   Long   ' 存放从文件头取得的两个文件的长度
    strFileName1 
=   " c:\a2.bmp " 
    strFileName2 
=   " c:\b2.bmp " 
    strFileSplit 
=   " c:\out.bmp " 

    Open strFileSplit 
For  Binary  As  # 100 

    
Get  # 100 , , lngLOF( 0 ' 取得第一文件的长度 
    
Get  # 100 , , lngLOF( 1 ' 第二文件的长度 

    Open strFileName1 
For  Binary  As  # 1 
    Open strFileName2 
For  Binary  As  # 2 

    
ReDim  aryContent(lngLOF( 0 ) - 1 ' 用第一文件的长度重定义数组,为读取第一文件做准备 
    
Get  # 100 9 , aryContent()  ' 从第9字节,即文件后面开始读取第一文件的内容 
    Put #
1 , , aryContent()  ' 把取得的内容写入到拆分文件中 

    
ReDim  aryContent(lngLOF( 1 ) - 1 )

    
Get  # 100 9   +  lngLOF( 0 +   1 , aryContent()  ' 从第9字节再加上第一文件的长度处开始读取第二文件的内容,这里可以清楚地看到文件头的作用了

    Put #
2 , , aryContent

    Close #
1 
    Close #

    Close #
100 
    
MsgBox   " 拆分完成。 " , vbInformation
文本文件由于没有格式所以它的读写都比较简单和直观,而用二进制操作文件时其实质就是对文件头的理解,如果不知道文件头的结构那就无法对文件进行处理了,知道了文件头所包含的信息后,对文件的操作其实就是按规则进行Get、Put罢了。
分享到:
评论

相关推荐

    VB链接帮助文件的两种方法.rar

    VB连接帮助文件,VB源码,程序中采用了两种方法进行操作欢迎大家下载

    VB6 FileExists判断文件是否存在.rar

    VB6 判断文件是否存在,使用VB内置的函数FileExists来实现,可以说实现方法简单,直接调用函数(文件路径)即可,至于返回的结果,这里有两种形式,一种是以MsgBox的方式弹出窗口告之,另一种是返回布尔值,True或...

    VB教程下载

    VB专区 ·Visual Basic 的数据库编程 ·使用VB建立Web Server ·VB与Windows资源管理器互拷文件 ·VB查找文件的两种方法 ·利用VB设计打印复杂报表 ·在VB中播放AVI文件 ·在VB中引用.dbf及索引文件 ·VB5.0中实现...

    VB串口通信源码210个

    046、VB串口通讯测试源代码,有文本和图形两种端口数据观察方式 047、VB串口通讯程序,用来跟单片机通讯 048、VB串口通讯代码(部分) 049、VB串口通讯的参考源程序 050、VB串口通讯实例 高精度电压表(24bit) VB源程序 ...

    VB串口通信UART程序实例源码合集学习资料(200个).zip

    VB串口通讯测试源代码,有文本和图形两种端口数据观察方式.rar VB串口通讯的参考源程序.rar vb串口通讯示例.rar VB串口通讯程序,用来跟单片机通讯.rar VB串口通讯视频教程源码41个 VB串行口通信测试示例.rar VB串行...

    modTC_Icon:让VB6支持[32位/24位]真彩色图标

    劲呢…… 于是,我把这个高清图标文件中32×32和16×16这两种规格的真彩色图标单独提取 出来,分别保存为一个.ico格式的文件,然后再用这两个图标文件来给它设置Icon属性。果然, 这两个文件在操作时VB6都提示...

    vb.net 透明窗体 窗口透明但控件不透明,截取窗口覆盖的背景区域图片方式

    本压缩包是一个vb.net工程,介绍两种非常逼真的透明方法,代码注释很多 1.一种是设置窗体属性,很简单,但是透明后,可以接触到窗口矩形区域下面的地方,比如有一个文件,可以直接双击打开,可以说操作是不透明的。...

    VB Decompiler Pro

    反编译GUID对象)两种伪代码反编译模式(包含堆栈解析或不包含堆栈解析)反汇编native code过程(使用强大的Pentium Pro反汇编器,支持MMX及FPU指令集)反汇编native code过程中的字符串引用以及API调用(使用强大的Pentium...

    vb控件开发 开发ocx

    01 , 01.txt 《 VB6.0中通过MSChart控件调用数据库 》 02 , 02.txt 《 用VB6实现动态增减控件 》 ...直接编辑VB中网格控制项的两种方法 86 , 86.txt 自制IE风格按纽控件 87 , 87.txt 自制控件方面的有关知识&lt;END&gt;

    可视化程序设计(VB)课件_东北大学

    掌握文件建立、关闭、读写的基本语句,以及文件的顺序和随机两种访问方式。了解文件操作的常用语句。 (二) 重点与难点 (1) 文件的基本概念,文本文件、二进制文件; (2) 文件建立、关闭、读写的基本语句 。 (三) ...

    VB自制TXT文件分割器

    VB自制TXT文件分割器_军刀TXT文件分割器源码,浏览所需要分割的TXT文件,选择分割方式,这里有两种TXT分割方式:1、按文件字节分割,用户自定义每次分割的字节大小,2、按平均分割文本,用户指定分割份数,一般按...

    VB数据库编程技术.doc

    VB提供了两种与Jet数据库引擎接口的方法:Data控件(Dat a Control)和数据访问对象(DAO)。Data控件只提供了有限的不需编程就能访问现存数据库 的功能,而DAO模型则是全面控制数据库的完整编程接口。这两种方法不是...

    vb编程常用命令集锦

    API说来说去,就是一种函数,他们包含在一个附加名为DLL的动态连接库文件中。用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言...

    2—1 VB6.0的集成开发环境

    窗体的最上层是“VB 6.0的菜单”和“便捷工具按钮”,菜单中包含了所有的VB提供的功能的选项,而其中一些常用的功能或操作选项则被提取出来放在了“便捷工具按钮”中,通过点击这些快捷按钮可以加快程序开发的速度,...

    自动计算数独VB源码

    难的数独是:可唯一确定的点很少,大部分点都有两种或多种可能的值,但最终正确答案只有一种或很少种解。 软件在自动计算过程中,具有很大的偶然性,对于骨灰级的数独题目在计算过程中,时间短的可能不到1秒就能...

    非Access数据库在VB中的编程及应用

    二 、使用非Access数据库时的参数设置及配置文件的参数读取如果在VB的程序中使用了数据库的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置 (.INI)文件,在INI文件中可以对不同类型的数据库...

    在.NET中读取嵌入和使用资源文件的方法

    Dotnet中嵌入资源(位图、图标或光标等)有两种方式,一是直接把资源文件加入到项目,作为嵌入资源,在代码中通过Assembly的GetManifestResourceStream方法获取资源的Stream。另一种方法是在项目中加入. resx资源...

    VB编程资源大全(源码 其它1)

    prnprv3.zip 在vb5/6中增加打印预览功能(78KB) 662,vbprint.zip vb中使用打印功能的add-in(764KB) 663,spool.zip 打印文件的例子(5KB) 664,versioninfo.zip 从dll或exe文件中获得版本信息(3KB)...

    VB通过ADO访问和改变SQL Server BLOB数据库.rar

    VB通过ADO访问和改变SQL Server BLOB数据库,两种功能:通过ADO保存数据到文件、保存数据到数据库。请测试前准备好SQLServer数据库并连接好。程序运行界面截图如上所示。

    VB编程资源大全(源码 网络)

    vb5mail.ZIP 演示接收和发送邮件, 需要mapi controls, grid controls (15KB) 58,starturl.ZIP 实现web页面中链接的点击效果 (8KB) 59,downloadweb.ZIP 下载web页面并显示文件中的内容 (7KB) 60...

Global site tag (gtag.js) - Google Analytics