Skip to content

cFileEx Class

Advanced file operations class based on VB native Open statement, with good compatibility and interface consistent with cFileIO.

Description

cFileEx uses VB native Open statement for file operations, with the following characteristics compared to cFileIO:

  • Better compatibility (does not depend on Win32 API)
  • Additional data format support (Base64, Hex, Binary)
  • Interface consistent with cFileIO, convenient for interchangeable use

Features:

  • One instance can only operate on one file at a time
  • Read content first enters internal buffer, then extracted via ReturnXXX methods
  • Supports UTF-8, ANSI, UTF-16LE encodings
  • Supports Base64, Hex, Binary string formats

Properties

Property NameTypeDescription
IsOpenBooleanWhether file is open (read-only)
FilePathStringCurrently opened file path (read-only)
LastErrorStringLast error message (read-only)
FileSizeCurrencyFile size (bytes)
BufferSizeLongCurrent buffer byte count

Methods

OpenFile

Opens a file, returns Me to support method chaining.

Syntax:

vb
Public Function OpenFile(ByVal FilePath As String, Optional ByVal AccessMode As String = "RW") As cFileEx

Parameters:

ParameterTypeDescription
FilePathStringFile path to open
AccessModeStringOptional. Access mode: R=read-only, W=write-only, RW=read-write (default)

Returns:

  • Returns self instance, supports method chaining

Description:

  • R mode: file must exist
  • W mode: creates or overwrites file
  • RW mode: creates file if it doesn't exist

Example:

vb
Dim File As New cFileEx

' Open in read-only mode
File.OpenFile "C:\\data\\file.txt", "R"

' Open in read-write mode (method chaining)
Dim Content As String
Content = File.OpenFile("C:\\data\\file.txt", "RW").ReadData().ReturnText()

CloseFile

Closes the currently opened file.

Syntax:

vb
Public Sub CloseFile()

Example:

vb
File.CloseFile

ClearBuffer

Clears the internal buffer.

Syntax:

vb
Public Function ClearBuffer() As cFileEx

Returns:

  • Returns self instance, supports method chaining

Example:

vb
File.ClearBuffer()

SetBuffer

Fills the buffer with external byte array.

Syntax:

vb
Public Function SetBuffer(Data() As Byte) As cFileEx

Parameters:

ParameterTypeDescription
DataByte()Byte array to set

Returns:

  • Returns self instance, supports method chaining

Example:

vb
Dim Bytes() As Byte
Bytes = StrConv("Hello", vbFromUnicode)
File.SetBuffer Bytes

AppendBuffer

Appends bytes to the buffer.

Syntax:

vb
Public Function AppendBuffer(Data() As Byte) As cFileEx

Parameters:

ParameterTypeDescription
DataByte()Byte array to append

Returns:

  • Returns self instance, supports method chaining

Example:

vb
Dim Part1() As Byte, Part2() As Byte
Part1 = StrConv("Hello ", vbFromUnicode)
Part2 = StrConv("World", vbFromUnicode)
File.SetBuffer(Part1).AppendBuffer(Part2)

SetBufferText

Fills the buffer with string (default UTF-8 encoding).

Syntax:

vb
Public Function SetBufferText(ByVal Text As String, Optional ByVal CharSet As String = "UTF-8") As cFileEx

Parameters:

ParameterTypeDescription
TextStringText to set
CharSetStringOptional. Encoding: UTF-8(default), ANSI, UTF-16LE

Returns:

  • Returns self instance, supports method chaining

Example:

vb
File.SetBufferText "Hello World 你好世界"
File.SetBufferText "Hello World", "ANSI"

SetBufferBase64

Fills the buffer with Base64 string.

Syntax:

vb
Public Function SetBufferBase64(ByVal Base64String As String) As cFileEx

Parameters:

ParameterTypeDescription
Base64StringStringBase64-encoded string

Returns:

  • Returns self instance, supports method chaining

Example:

vb
Dim Base64 As String
Base64 = "SGVsbG8gV29ybGQ="
File.SetBufferBase64 Base64

SetBufferHex

Fills the buffer with Hex string.

Syntax:

vb
Public Function SetBufferHex(ByVal HexString As String, Optional ByVal Separator As String = " ") As cFileEx

Parameters:

ParameterTypeDescription
HexStringStringHex-encoded string
SeparatorStringOptional. Separator, default is space

Returns:

  • Returns self instance, supports method chaining

Description:

  • Automatically removes separators and whitespace
  • Supports spaces, tabs, newlines as separators

Example:

vb
' Space separated
File.SetBufferHex "48 65 6C 6C 6F"

' Without separator
File.SetBufferHex "48656C6C6F", ""

' Custom separator
File.SetBufferHex "48-65-6C-6C-6F", "-"

SetBufferBinString

Fills the buffer with binary string.

Syntax:

vb
Public Function SetBufferBinString(ByVal BinString As String, Optional ByVal Separator As String = " ") As cFileEx

Parameters:

ParameterTypeDescription
BinStringStringBinary string (e.g., "01001000")
SeparatorStringOptional. Separator, default is space

Returns:

  • Returns self instance, supports method chaining

Description:

  • Each group of 8 bits represents one byte
  • Pads with leading zeros if length is not a multiple of 8

Example:

vb
' Space separated
File.SetBufferBinString "01001000 01100101 01101100 01101100 01101111"

' Without separator
File.SetBufferBinString "0100100001100101", ""

ReadData

Reads specified range of file into internal buffer.

Syntax:

vb
Public Function ReadData(Optional ByVal StartPos As Long = -1, Optional ByVal EndPos As Long = -1) As cFileEx

Parameters:

ParameterTypeDescription
StartPosLongOptional. Start position (1-based, -1 means from beginning)
EndPosLongOptional. End position (1-based, -1 means to end)

Returns:

  • Returns self instance, supports method chaining

Description:

  • Position parameters are 1-based byte positions (different from cFileIO)

Example:

vb
' Read entire file
File.OpenFile("C:\\data\\file.txt", "R").ReadData()

' Read bytes 1-1000
File.ReadData(1, 1000)

' Read from byte 1001 to end
File.ReadData(1001, -1)

ReturnText

Returns text from buffer.

Syntax:

vb
Public Function ReturnText(Optional ByVal CharSet As String = "UTF-8") As String

Parameters:

ParameterTypeDescription
CharSetStringOptional. Encoding: UTF-8(default), ANSI, UTF-16LE

Returns:

  • String content

Example:

vb
Dim Content As String
Content = File.OpenFile("C:\\data\\file.txt", "R") _
              .ReadData() _
              .ReturnText("UTF-8")

ReturnBytes

Returns byte array from buffer (copy).

Syntax:

vb
Public Function ReturnBytes() As Byte()

Returns:

  • Byte array

Example:

vb
Dim Bytes() As Byte
Bytes = File.ReadData().ReturnBytes()

ReturnBase64

Returns Base64-encoded string from buffer.

Syntax:

vb
Public Function ReturnBase64() As String

Returns:

  • Base64-encoded string

Example:

vb
Dim Base64 As String
Base64 = File.OpenFile("C:\\data\\image.png", "R").ReadData().ReturnBase64()

ReturnHex

Returns Hex-encoded string from buffer.

Syntax:

vb
Public Function ReturnHex(Optional ByVal Separator As String = " ") As String

Parameters:

ParameterTypeDescription
SeparatorStringOptional. Separator, default is space

Returns:

  • Hex-encoded string

Example:

vb
Dim HexStr As String
HexStr = File.ReadData().ReturnHex(" ")
' Output: 48 65 6C 6C 6F

HexStr = File.ReadData().ReturnHex("")
' Output: 48656C6C6F

ReturnBinString

Returns binary string from buffer.

Syntax:

vb
Public Function ReturnBinString(Optional ByVal Separator As String = " ") As String

Parameters:

ParameterTypeDescription
SeparatorStringOptional. Separator, default is space

Returns:

  • Binary string (8 bits per group)

Example:

vb
Dim BinStr As String
BinStr = File.ReadData().ReturnBinString(" ")
' Output: 01001000 01100101 01101100 01101100 01101111

SaveData

Writes internal buffer to file.

Syntax:

vb
Public Function SaveData(Optional ByVal FilePath As String, Optional ByVal IsAppend As Boolean = False) As cFileEx

Parameters:

ParameterTypeDescription
FilePathStringOptional. Target path, uses path from OpenFile if not provided
IsAppendBooleanOptional. False=overwrite (default), True=append to end of file

Returns:

  • Returns self instance, supports method chaining

Example:

vb
' Overwrite
File.SetBufferText("Hello").SaveData("C:\\data\\output.txt")

' Append
File.SetBufferText("\nNew line").SaveData("C:\\data\\log.txt", True)

Usage Examples

Example 1: Basic File Read/Write

vb
Sub BasicFileExample()
    Dim File As New cFileEx
    
    ' Write file
    File.SetBufferText("Hello World 你好世界", "UTF-8") _
        .SaveData("C:\\data\\test.txt")
    
    ' Read file
    Dim Content As String
    Content = File.OpenFile("C:\\data\\test.txt", "R") _
                  .ReadData() _
                  .ReturnText("UTF-8")
    
    Debug.Print Content
    File.CloseFile
End Sub

Example 2: Hex Data Processing

vb
Sub HexDataExample()
    Dim File As New cFileEx
    
    ' Create data from Hex string
    File.SetBufferHex("48 65 6C 6C 6F 20 57 6F 72 6C 64")
    
    ' Return in different formats
    Debug.Print "Text: " & File.ReturnText()           ' Hello World
    Debug.Print "Base64: " & File.ReturnBase64()       ' SGVsbG8gV29ybGQ=
    Debug.Print "Hex(no sep): " & File.ReturnHex("")   ' 48656C6C6F20576F726C64
    Debug.Print "Binary: " & File.ReturnBinString(" ") ' 01001000 01100101 ...
End Sub

Example 3: Binary Data Processing

vb
Sub BinaryDataExample()
    Dim File As New cFileEx
    
    ' Create data from binary string
    File.SetBufferBinString "01000001 01000010 01000011"  ' ABC
    
    ' Save as file
    File.SaveData "C:\\data\\binary.bin"
    
    ' Read and display as Hex
    File.OpenFile("C:\\data\\binary.bin", "R").ReadData()
    Debug.Print File.ReturnHex()  ' 41 42 43
End Sub

Example 4: Base64 Encoding/Decoding

vb
Sub Base64Example()
    Dim File As New cFileEx
    
    ' Read file and convert to Base64
    File.OpenFile("C:\\data\\image.png", "R").ReadData()
    Dim Base64 As String
    Base64 = File.ReturnBase64()
    
    ' Restore from Base64
    File.SetBufferBase64(Base64).SaveData "C:\\data\\image_copy.png"
    
    Debug.Print "Base64 encoding/decoding completed"
End Sub

Example 5: Data Format Conversion

vb
Sub FormatConversionExample()
    Dim File As New cFileEx
    
    ' Original text
    Dim Text As String
    Text = "Hello"
    
    ' Text -> Hex
    File.SetBufferText(Text)
    Debug.Print "Hex: " & File.ReturnHex(" ")      ' 48 65 6C 6C 6F
    
    ' Hex -> Text
    File.SetBufferHex("48 65 6C 6C 6F")
    Debug.Print "Text: " & File.ReturnText()       ' Hello
    
    ' Text -> Base64
    File.SetBufferText(Text)
    Debug.Print "Base64: " & File.ReturnBase64()   ' SGVsbG8=
    
    ' Base64 -> Text
    File.SetBufferBase64("SGVsbG8=")
    Debug.Print "Text: " & File.ReturnText()       ' Hello
End Sub

cFileIO vs cFileEx Comparison

FeaturecFileIOcFileEx
ImplementationWin32 APIVB Open statement
Large file supportYes (>2GB)No (VB limitation)
CompatibilityRequires WindowsBetter cross-platform compatibility
Base64 supportYesYes
Hex supportNoYes
Binary supportNoYes
Read position0-based1-based

Selection Guide:

  • Need to handle large files (>2GB) → Use cFileIO
  • Need Hex/Binary format support → Use cFileEx
  • General file operations → Either works

VB6 and LOGO copyright of Microsoft Corporation