万达附近的幼儿园:如何用vb读写以二进制形式读写文件?

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 07:55:04
介绍一点函数.我没有MDSN.

使用随即方式读写,数据类型可以这样(如果都是第一个和第六个为长整形):
type xxx
p1 as long
p2 as single
p3 as single
p4 as single
p5 as single
p6 as long
end type
dim vxxx as xxx
打开文件
open filepath for access as filenum len=lenb(vxxx)
读写:
使用put和get
open filename$ for binary #filenumber'以二进制方式建立或者打开文件,然后再用
put #filenumber,postion,inputdata'写入数据inputdata
get #filenumber,postion,outputvarible'读出数据到outputvarible
这是我对二进制文件写的一段源码,你自已分析吧

'***************************************************************************************
' 目的: 将文件保存到数据库
' 方法: DAO
' 输入:
'***************************************************************************************
Public Sub SaveDataToRs(ByVal sGtXs As String)
Dim i As Integer
Dim myRs As Recordset, mySql As String
Dim DataFile As Integer
Dim Fragment As Integer, Fl As Long, Chunks As Integer
Dim Chunk() As Byte
Const ChunkSize As Integer = 1024

mySql = "select 图片 from 杆塔型式表 where 杆塔型式 like '" & sGtXs & "'"
Set myRs = myDb.OpenRecordset(mySql, dbOpenDynaset)

DataFile = 1
Open sFileName For Binary Access Read As DataFile

Fl = LOF(DataFile)
If Fl = 0 Then
Close DataFile
Set myRs = Nothing
MsgBox "文件长度为零!保存数据没有成功"
Exit Sub
End If

myRs.Edit
Chunks = Fl ChunkSize
Fragment = Fl Mod ChunkSize
ReDim Chunk(Fragment)
Get DataFile, , Chunk()
myRs!图片.AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get DataFile, , Chunk()
myRs!图片.AppendChunk Chunk()
Next i
Close DataFile
myRs.Update

myRs.Close
Set myRs = Nothing
End Sub

'***************************************************************************************
' 目的: 从数据库中读取数据(二进制)写入文件
' 方法: ADO
' 输入:
'***************************************************************************************
Public Sub ReadDataFromRs(ByVal sGtXs As String) '提取到文件
Dim cnn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strCnn As String
Dim DataFile As Integer
Dim Fragment As Integer, Fl As Long, Chunks As Integer
Dim Chunk() As Byte
Dim lngOffset As Long, lngTotalSize As Long
Dim strChunk As String
Const ChunkSize As Integer = 1024
Const rsField As String = "图片"

' 打开连接。
strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data source=" & App.Path & "pwmis.mdb;" 'SQL 连接为: strCnn = "Provider=sqloledb;" & "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
cnn1.Open strCnn
rs.Open "select 图片 from 杆塔型式表 where 杆塔型式 like '" & sGtXs & "'", cnn1

If Not rs.EOF Then
DataFile = 1
Open App.Path & "temp.tmp" For Binary Access Write As DataFile
lngTotalSize = rs.Fields(rsField).ActualSize
Chunks = lngTotalSize ChunkSize
Fragment = lngTotalSize Mod ChunkSize
ReDim Chunk(ChunkSize)
Chunk() = rs.Fields(rsField).GetChunk(ChunkSize)
Put DataFile, , Chunk()
lngOffset = lngOffset + ChunkSize
Do While lngOffset < lngTotalSize
Chunk() = rs.Fields(rsField).GetChunk(ChunkSize)
Put DataFile, , Chunk()
lngOffset = lngOffset + ChunkSize
Loop
Close DataFile
End If
rs.Close
Set rs = Nothing
End Sub