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
ReturnXXXmethods - Supports UTF-8, ANSI, UTF-16LE encodings
- Supports Base64, Hex, Binary string formats
Properties
| Property Name | Type | Description |
|---|---|---|
IsOpen | Boolean | Whether file is open (read-only) |
FilePath | String | Currently opened file path (read-only) |
LastError | String | Last error message (read-only) |
FileSize | Currency | File size (bytes) |
BufferSize | Long | Current buffer byte count |
Methods
OpenFile
Opens a file, returns Me to support method chaining.
Syntax:
Public Function OpenFile(ByVal FilePath As String, Optional ByVal AccessMode As String = "RW") As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
FilePath | String | File path to open |
AccessMode | String | Optional. Access mode: R=read-only, W=write-only, RW=read-write (default) |
Returns:
- Returns self instance, supports method chaining
Description:
Rmode: file must existWmode: creates or overwrites fileRWmode: creates file if it doesn't exist
Example:
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:
Public Sub CloseFile()Example:
File.CloseFileClearBuffer
Clears the internal buffer.
Syntax:
Public Function ClearBuffer() As cFileExReturns:
- Returns self instance, supports method chaining
Example:
File.ClearBuffer()SetBuffer
Fills the buffer with external byte array.
Syntax:
Public Function SetBuffer(Data() As Byte) As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
Data | Byte() | Byte array to set |
Returns:
- Returns self instance, supports method chaining
Example:
Dim Bytes() As Byte
Bytes = StrConv("Hello", vbFromUnicode)
File.SetBuffer BytesAppendBuffer
Appends bytes to the buffer.
Syntax:
Public Function AppendBuffer(Data() As Byte) As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
Data | Byte() | Byte array to append |
Returns:
- Returns self instance, supports method chaining
Example:
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:
Public Function SetBufferText(ByVal Text As String, Optional ByVal CharSet As String = "UTF-8") As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
Text | String | Text to set |
CharSet | String | Optional. Encoding: UTF-8(default), ANSI, UTF-16LE |
Returns:
- Returns self instance, supports method chaining
Example:
File.SetBufferText "Hello World 你好世界"
File.SetBufferText "Hello World", "ANSI"SetBufferBase64
Fills the buffer with Base64 string.
Syntax:
Public Function SetBufferBase64(ByVal Base64String As String) As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
Base64String | String | Base64-encoded string |
Returns:
- Returns self instance, supports method chaining
Example:
Dim Base64 As String
Base64 = "SGVsbG8gV29ybGQ="
File.SetBufferBase64 Base64SetBufferHex
Fills the buffer with Hex string.
Syntax:
Public Function SetBufferHex(ByVal HexString As String, Optional ByVal Separator As String = " ") As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
HexString | String | Hex-encoded string |
Separator | String | Optional. Separator, default is space |
Returns:
- Returns self instance, supports method chaining
Description:
- Automatically removes separators and whitespace
- Supports spaces, tabs, newlines as separators
Example:
' 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:
Public Function SetBufferBinString(ByVal BinString As String, Optional ByVal Separator As String = " ") As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
BinString | String | Binary string (e.g., "01001000") |
Separator | String | Optional. 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:
' Space separated
File.SetBufferBinString "01001000 01100101 01101100 01101100 01101111"
' Without separator
File.SetBufferBinString "0100100001100101", ""ReadData
Reads specified range of file into internal buffer.
Syntax:
Public Function ReadData(Optional ByVal StartPos As Long = -1, Optional ByVal EndPos As Long = -1) As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
StartPos | Long | Optional. Start position (1-based, -1 means from beginning) |
EndPos | Long | Optional. 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:
' 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:
Public Function ReturnText(Optional ByVal CharSet As String = "UTF-8") As StringParameters:
| Parameter | Type | Description |
|---|---|---|
CharSet | String | Optional. Encoding: UTF-8(default), ANSI, UTF-16LE |
Returns:
- String content
Example:
Dim Content As String
Content = File.OpenFile("C:\\data\\file.txt", "R") _
.ReadData() _
.ReturnText("UTF-8")ReturnBytes
Returns byte array from buffer (copy).
Syntax:
Public Function ReturnBytes() As Byte()Returns:
- Byte array
Example:
Dim Bytes() As Byte
Bytes = File.ReadData().ReturnBytes()ReturnBase64
Returns Base64-encoded string from buffer.
Syntax:
Public Function ReturnBase64() As StringReturns:
- Base64-encoded string
Example:
Dim Base64 As String
Base64 = File.OpenFile("C:\\data\\image.png", "R").ReadData().ReturnBase64()ReturnHex
Returns Hex-encoded string from buffer.
Syntax:
Public Function ReturnHex(Optional ByVal Separator As String = " ") As StringParameters:
| Parameter | Type | Description |
|---|---|---|
Separator | String | Optional. Separator, default is space |
Returns:
- Hex-encoded string
Example:
Dim HexStr As String
HexStr = File.ReadData().ReturnHex(" ")
' Output: 48 65 6C 6C 6F
HexStr = File.ReadData().ReturnHex("")
' Output: 48656C6C6FReturnBinString
Returns binary string from buffer.
Syntax:
Public Function ReturnBinString(Optional ByVal Separator As String = " ") As StringParameters:
| Parameter | Type | Description |
|---|---|---|
Separator | String | Optional. Separator, default is space |
Returns:
- Binary string (8 bits per group)
Example:
Dim BinStr As String
BinStr = File.ReadData().ReturnBinString(" ")
' Output: 01001000 01100101 01101100 01101100 01101111SaveData
Writes internal buffer to file.
Syntax:
Public Function SaveData(Optional ByVal FilePath As String, Optional ByVal IsAppend As Boolean = False) As cFileExParameters:
| Parameter | Type | Description |
|---|---|---|
FilePath | String | Optional. Target path, uses path from OpenFile if not provided |
IsAppend | Boolean | Optional. False=overwrite (default), True=append to end of file |
Returns:
- Returns self instance, supports method chaining
Example:
' 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
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 SubExample 2: Hex Data Processing
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 SubExample 3: Binary Data Processing
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 SubExample 4: Base64 Encoding/Decoding
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 SubExample 5: Data Format Conversion
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 SubcFileIO vs cFileEx Comparison
| Feature | cFileIO | cFileEx |
|---|---|---|
| Implementation | Win32 API | VB Open statement |
| Large file support | Yes (>2GB) | No (VB limitation) |
| Compatibility | Requires Windows | Better cross-platform compatibility |
| Base64 support | Yes | Yes |
| Hex support | No | Yes |
| Binary support | No | Yes |
| Read position | 0-based | 1-based |
Selection Guide:
- Need to handle large files (>2GB) → Use
cFileIO - Need Hex/Binary format support → Use
cFileEx - General file operations → Either works