FileSystemItem class
The base interface for everything inside the IDE’s virtual file system. Both File and Folder extend FileSystemItem and inherit its four universal members (Name, Path, Type, Parent). An item returned from a Folder enumeration or from FileSystem.ResolvePath is normally castable to its specific kind — the Type property or TypeOf discriminates between them.
Dim item As FileSystemItem
For Each item In Host.CurrentProject.RootFolder
If TypeOf item Is Folder Then
' …recurse
Else
Dim file As File = item
' …read
End If
Next
Properties
Name
The item’s name (the last segment of its Path). String, read-only. For files, includes the extension.
Parent
The folder that contains this item. As Folder. Read-only. The Parent of the project’s folder, Project.RootFolder, is the file system’s root, FileSystem.RootFolder, whose Path is twinbasic:/.
Warning
In BETA 1005, reading Parent of the file system’s root crashes the compiler, and the add-in with it. The read itself crashes, before anything is done with the value, so neither Is Nothing nor TypeName can test it, and each compiler the IDE restarts crashes again when the add-in reaches the read. Tell the root by its Path, twinbasic:/, rather than by its Parent.
Path
The item’s full virtual-FS path — e.g. "twinbasic:/Sources/MainModule.twin". String, read-only. Suitable as the Path argument to Editors.Open and FileSystem.ResolvePath.
Type
The kind of item. As FileSystemItemType (see below). Read-only. For folders the value is always Folder; for files it identifies the file’s encoding and role.
FileSystemItemType
A type discriminator returned by Type.
| Constant | Value | Description |
|---|---|---|
| Folder | 0 | A folder. |
| FileVIRTUALDOC | 1 | A read-only virtual document — the placeholder content the IDE renders for unrecognised file types. Unicode (UTF-16). |
| FileOTHER | 2 | A file the IDE recognises as binary or whose encoding it cannot determine. File.ReadText is not supported on this kind. |
| FileTWIN | 3 | A twinBASIC source file (.twin). UTF-8 encoded on disk. |
| FileBAS | 4 | A VB6-compatible standard module file (.bas). System ANSI encoded on disk. |
| FileCLS | 5 | A VB6-compatible class module file (.cls). System ANSI encoded on disk. |
| FileUIDESIGNER | 6 | A UI-designer surface for a Form, expressed as JSON. UTF-8 encoded. |
| FileJSON | 7 | A JSON file — typically the project’s Settings or other JSON project data. UTF-8 encoded. |