`
free_bird816
  • 浏览: 205919 次
  • 性别: 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 获取指定文件大小的方法_VB_

    理解了这两种方法后,初学者可以在实际项目中灵活运用。无论是VB6还是VB .NET,都可以方便地获取到文件大小信息,这对于进行文件读写、进度条显示、磁盘空间检查等操作都是必不可少的。同时,这也是学习其他高级编程...

    VB文件 操作_随机和顺序

    在“VB文件 操作_随机和顺序”这个主题中,我们主要探讨的是两种基本的文件处理方式:随机文件(Random File)和顺序文件(Sequential File),以及VB中的文件系统控件的应用。 首先,随机文件允许程序员在文件中的...

    vb中调用CHM的两种方法及源代码

    本篇文章将详细探讨两种在VB中调用CHM文件的方法,并提供相应的源代码示例。 ### 方法一:利用Windows API调用CHM文件 Windows API (Application Programming Interface) 提供了直接操作操作系统功能的接口。在VB...

    vb资源文件RES用法

    在VB6.0中创建RES资源文件通常有两种方式: - 使用资源编辑器(如Microsoft Resource Editor)手动创建和编辑资源文件。 - 通过编程工具自动生成资源文件。 无论哪种方式,最终都需要将RES文件添加到VB6.0项目中。...

    VB 读写文件的 OCX

    VB中进行文件操作通常涉及以下知识点: 1. **FileOpen**:这是VB中的一个函数,用于打开一个文件以便读写。它需要指定文件编号、打开模式(如读、写或追加)、共享模式以及错误处理。 2. **Input# 和 Output#**:...

    VB6.0读写INI文件

    下面将详细阐述如何在VB6.0中进行INI文件的操作。 首先,理解INI文件结构。INI文件由多个节(Section)组成,每个节下可以有多个键值对(Key=Value)。例如: ``` [Section1] Key1=Value1 Key2=Value2 [Section2]...

    怎样利用VB6.0程序对.ini文件进行读写操作

    在VB6.0编程环境中,我们经常会遇到需要与配置文件打交道的情况,而.INI文件是一种常见的配置文件格式,用于存储应用程序的设置和参数。本文将详细介绍如何使用VB6.0来读取和写入.INI文件,以实现数据库连接信息的...

    VB操作EXCEL的csv文件

    5. **CSV文件操作示例**: - **内容相加**:假设我们有两个CSV文件,每行对应的数据相加后写入新的CSV文件。 - **内容转置**:将CSV文件的列转换为行,即原文件的第一行变为新文件的第一列,原文件的第二行变为新...

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

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

    VB读取、保存文件的2种方法(传统、文件系统)

    - 在VB考试中,理解这两种方法及其应用场景至关重要。对于初学者,理解基本的文件操作是必要的,而熟悉`FileSystemObject`则能提高处理文件问题的能力。 5. **注意事项** - 文件操作时要确保文件路径正确,否则...

    VB.NET]读写INI文件

    INI 文件是一种常用的配置文件格式,广泛应用于 Windows 操作系统中。VB.NET 提供了读写 INI 文件的功能,使得开发者可以轻松地实现应用程序的配置管理。本文将详细介绍如何使用 VB.NET 读写 INI 文件。 知识点 1: ...

    VB 设置文件浏览方式

    在VB(Visual Basic)编程中,设置文件浏览方式主要涉及到两个关键知识点:文件对话框的使用和文件操作。本文将详细讲解如何在VB环境中实现文件浏览功能,并介绍相关的文件操作。 首先,VB提供了两种基本的文件...

    文件拖放操作源代码(vb.net2005)

    在VB.NET 2005中,文件拖放操作是一种常见的用户界面交互方式,它使得用户可以通过简单的拖动鼠标动作将文件从桌面或其他位置移动到应用程序中。这种功能的实现涉及Windows Forms编程和.NET Framework的一些核心组件...

    vb删除隐藏和只读文件

    隐藏和只读属性是Windows操作系统中文件的两种特殊属性,用于保护文件不受意外修改或删除。本篇文章将深入探讨如何在VB中处理这些特性,并有效地删除这些文件。 首先,我们需要了解VB中的基本文件操作函数。`Kill`...

    VB中使用INI文件的方法

    #### 三、在VB中操作INI文件 在VB中读取和写入INI文件通常通过调用Windows API函数来实现。常用的API函数有`WritePrivateProfileString`和`GetPrivateProfileString`。下面详细介绍这两个函数及其使用方法。 #####...

    VB批量拷贝文件

    首先,我们需要了解VB中的基本文件操作函数。在VB中,`My.Computer.FileSystem` 类提供了对文件系统进行操作的一系列方法,包括复制、移动、删除和检查文件或目录等。批量拷贝文件的核心就是使用`CopyFile` 或 `Copy...

    VB资源文件制作软件

    VB资源文件制作软件是一种工具,主要用于Visual Basic (VB)应用程序的开发过程中,帮助开发者将各种资源(如图像、文本、声音等)集成到程序中。资源文件是Windows应用程序中的一个重要组成部分,它们包含了程序运行...

    vb读取txt文件

    在Visual Basic(以下简称VB)中,读取TXT文件主要有两种方式:随机方式和顺序方式。 #### 随机方式读取TXT文件 随机方式通常用于处理固定长度的数据记录。例如: ```vb Dim gFileNum As Integer gFileNum = ...

    VB加载外部文件

    在VB(Visual Basic)编程环境中,加载外部文件的能力是一项实用的功能,它允许开发者将不同的模块或组件集成到主应用程序中,提高代码复用性和程序的灵活性。本篇将深入探讨如何在VB中加载外部的EXE文件,以及相关...

    Vb程序实现HTTP方式下载文件.rar

    在VB(Visual Basic)编程环境中,HTTP方式下载文件是一个常见的任务,它涉及到网络通信和文件操作。本项目中,我们利用VB实现了一个类似IE浏览器"另存为"功能的文件下载程序,它通过调用系统API函数和使用shdocvw....

Global site tag (gtag.js) - Google Analytics