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