打印

【xnwxq】文件流的读、写操作的类

[复制链接]
1566|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xnwxq|  楼主 | 2009-8-23 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个代码是一个对文件读、写的类文件。大家可以下下载回去研究一下。
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

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我们都是风雨中的孩子,手牵着手才不会跌倒

162

主题

294

帖子

1

粉丝