VB中文件操作的两种方式

 

VB中文件操作的两种方式

 

  • 文本文件的操作

 

此种方式是以行为单位进行读取的基本单位,主要应用的方法和函数有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

 

  • 二进制文件的操作

 

    所有文件的存储其实质都是二进制的,二进制文件往往由两部分组成,一部分是文件头另一部分存放了文件的内容。文件头通常存放与文件格式有关的信息,以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 #1

    Close #2

    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 #2

    Close #100

   

    MsgBox 拆分完成。, vbInformation

 

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在VB.NET,我们可以使用不同的方法读写数据文件。 读取数据文件: - 使用StreamReader类,我们可以打开一个数据文件并逐行读取其的数据。首先,我们需要创建一个StreamReader对象并使用OpenText方法打开数据文件。然后,使用ReadLine方法来读取一行数据,并将数据存储在变量。通过重复这个过程,我们可以读取文件的所有数据。最后,我们需要使用Close方法关闭文件。 写入数据文件: - 使用StreamWriter类,我们可以打开一个数据文件并将数据写入其。首先,我们需要创建一个StreamWriter对象并使用CreateText方法创建新文件或使用AppendText方法打开已存在的文件。然后,我们可以使用WriteLine方法向文件写入一行数据,或使用Write方法向文件写入指定的内容。通过重复这个过程,我们可以向文件写入所需的数据。最后,我们需要使用Close方法关闭文件。 此外,还有其他数据文件读写的方式可供选择: - 使用BinaryReader和BinaryWriter类,可以读写二进制文件。 - 使用File类的ReadAllText和WriteAllText方法,可以一次性读取或写入整个文件的内容。 无论使用哪种方法,我们需要注意的是要正确处理文件操作期间可能发生的异常。为此,我们可以使用Try-Catch语句来捕获和处理可能的异常,以确保程序的稳定性和可靠性。 总之,在VB.NET,有多种方法可供选择读写数据文件,我们可以根据自己的需求和偏好来选择最合适的方法。 ### 回答2: 在VB.NET,可以使用输入输出流来读写数据文件。 对于数据文件的读取,首先需要创建一个文件输入流(FileInputStream)或者文本读取器(TextReader),打开需要读取的文件。然后,通过循环读取数据流或者逐行读取文本的方式,从文件逐个读取数据,并将其存储到变量或者集合。 例如,可以使用StreamReader类来读取文本文件。可以使用下面的代码片段来演示如何读取一个文本文件: ``` Dim filePath As String = "C:\data.txt" ' 此处为文件路径 Dim line As String Using reader As New StreamReader(filePath) Do While reader.Peek() >= 0 line = reader.ReadLine() ' 在此处处理读取的数据 Console.WriteLine(line) Loop reader.Close() End Using ``` 对于数据文件的写入,同样需要创建一个文件输出流(FileOutputStream)或者文本编写器(TextWriter),打开需要写入的文件。然后,通过将数据逐个写入数据流或者逐行写入文本的方式,将其写入到文件。 例如,可以使用StreamWriter类来写入文本文件。可以使用下面的代码片段来演示如何写入一个文本文件: ``` Dim filePath As String = "C:\data.txt" ' 此处为文件路径 Using writer As New StreamWriter(filePath) writer.WriteLine("Hello, world!") ' 在此处写入更多数据 writer.Close() End Using ``` 需要注意的是,在读写数据文件时,要确保文件路径的正确性,并且进行异常处理,以处理可能的读写错误或者文件不存在的情况。 ### 回答3: VB.NET提供了很多用于读写数据文件的功能和方法。 对于文本文件的读写,可以使用StreamReader和StreamWriter类来实现。StreamReader类提供了ReadLine和ReadToEnd方法用于读取文本文件的内容,而StreamWriter类提供了Write和WriteLine方法用于写入文本到文件。使用这两个类的实例,我们可以很方便地读取和写入文本文件的数据。 对于二进制文件的读写,可以使用BinaryReader和BinaryWriter类来实现。BinaryReader类提供了Read和ReadString等方法用于读取二进制文件的内容,而BinaryWriter类提供了Write和WriteString等方法用于写入数据到二进制文件。使用这两个类的实例,我们可以读取和写入任何形式的二进制数据。 另外,VB.NET还提供了一些其他的类和方法来处理数据库文件的读写。例如,可以使用OleDbDataReader和OleDbCommand类来从数据库读取数据,使用OleDbCommand类和ExecuteNonQuery方法来执行SQL语句更新数据库的数据。 在读写数据文件的过程,我们还可以使用异常处理机制来处理可能出现的错误。例如,可以使用Try-Catch语句来捕获可能抛出的异常,并根据需要采取相应的处理措施,比如显示错误消息或回滚已进行的操作。 总之,通过VB.NET提供的各种类和方法,我们可以方便地实现数据文件的读写操作。无论是文本文件,二进制文件,还是数据库文件,都可以通过适当的类和方法来进行读取和写入操作,并在必要时进行异常处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值