这个代码是一个对文件读、写的类文件。大家可以下下载回去研究一下。
Option Explicit
Private m_strFilePath As String
Private m_intFileNum As Integer
Private m_bytBuffer() As Byte
Public Property Get FilePath() As String
FilePath = m_strFilePath
End Property
Public Property Let FilePath(ByVal strFilePath As String)
m_strFilePath = strFilePath
End Property
Public Property Get EOS() As Boolean
If Ready() Then
EOS = EOF(m_intFileNum)
Else
EOS = True
End If
End Property
Public Property Get Ready() As Boolean
Ready = m_intFileNum <> 0
End Property
Public Function CloseFile() As Boolean
If Ready() Then
Close #m_intFileNum
m_intFileNum = 0
CloseFile = True
Else
CloseFile = False
End If
End Function
Public Function OpenFile() As Boolean
On Error Goto HandleError
CloseFile
m_intFileNum = FreeFile
Open m_strFilePath For Binary As #m_intFileNum
OpenFile = True
Exit Function
HandleError:
OpenFile = False
End Function
Public Property Get Position() As Long
If Ready() Then
Position = Loc(m_intFileNum)
Else
Position = -1
End If
End Property
Public Property Let Position(ByVal lngPosition As Long)
If Ready() Then
If lngPosition > 0 And lngPosition <= LOF(m_intFileNum) Then
Seek #m_intFileNum, lngPosition
Else
RaiseError "Position", "Position invalid"
End If
Else
RaiseError "Position"
End If
End Property
Private Sub RaiseError(ByVal strProcedure As String, _
Optional ByVal strDescription As String = "File Not Opened")
Err.Raise vbObjectError + 101, strProcedure, strDescription
End Sub
Public Function ReadBytes(ByVal lngCount As Long) As Byte()
If Ready() Then
If lngCount > 0 And lngCount + Loc(m_intFileNum) - 1 <= LOF(m_intFileNum) Then
ReDim m_bytBuffer(0 To lngCount - 1) As Byte
Get #m_intFileNum, , m_bytBuffer
ReadBytes = m_bytBuffer
Else
RaiseError "ReadBytes", "Out of boundary"
End If
Else
RaiseError "ReadBytes"
End If
End Function
Public Function ReadText(ByVal lngCount As Long) As String
ReadText = StrConv(ReadBytes(lngCount), vbUnicode)
End Function
Public Sub WriteBytes(ByRef bytContent() As Byte)
If Ready() Then
Put #m_intFileNum, , bytContent
Else
RaiseError "WriteBytes"
End If
End Sub
Public Sub WriteText(ByVal strText As String)
WriteBytes StrConv(strText, vbFromUnicode)
End Sub
Private Sub Class_Initialize()
m_intFileNum = 0
End Sub
Private Sub Class_Terminate()
CloseFile
End Sub |