The FSO (File System Object) model enables VB to process drives and create, alter, move, delete, and detect folders and files.


In VB there are 3 basic ways to process drives and create, alter, move, delete, and detect folders and files:

  1. The older file I/O functions and statements. Can manipulate binary files. EGs:
    • Close, Get, Input(), Input #, Line Input #, Open, Print #, Put, Type ... End Type, Write #.
    • Dir, EOF, FileCopy, FileDateTime, FileLen, FreeFile, GetAttr, Loc, LOF, Seek, SetAttr.
  2. The FSO models for VB6 and VBS. Cannot manipulate binary files. 5 objects in the FSO object model.
    • FileSystemObject
      • Drives collection
        • Drive object
        • Folders collection
          • Folder object
          • Files collection
            • File object
            • TextStream object
  3. Filing for VB .NET. Can manipulate binary files.
    • Microsft.VisualBasic namespace.
    • System.IO namespace.
    • Scripting.FileSystemObject.

This section will focus on the FSO from the VB6 and VBS perspective.

FSO can perform powerful tasks usually done via the OS (operating system):

FSO is contained in the Scripting type library (Scrrun.Dll), so VB actually uses the library of VBS! Only 1 instance of the FSO can exist at a time.

Basic Usage

Different ways of instantiating an FSO object.

Dim fso As New FileSystemObject
'For VB only.
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
'For VB or VBS.
var fso;
fso = Server.CreateObject("Scripting.FileSystemObject")
//For JavaScript or JScript.
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject")
//For JavaScript or JScript.
Regarding drives. If you use the CurDir() function, the ChDrive and ChDir statements, or the Path property (App.Path), be aware that they may return a UNC path (EG: \\Server\Share) rather than a drive path (EG: E:\Folder).

Here are common tasks done with folders:

Task Method or Property
Create a folder. FileSystemObject.CreateFolder()
Delete a folder. Folder.Delete() or FileSystemObject.DeleteFolder()
Move a folder. Folder.Move() or FileSystemObject.MoveFolder()
Copy a folder. Folder.Copy() or FileSystemObject.CopyFolder()
Retrieve the name of a folder. Folder.Name
Find out if a folder exists on a drive. FileSystemObject.FolderExists()
Get an instance of an existing Folder object. FileSystemObject.GetFolder()
Find out the name of a folder's parent folder. FileSystemObject.GetParentFolderName()
Find out the path of system folders. FileSystemObject.GetSpecialFolder()

3 ways to create an empty text file (aka a text stream):

Set f1 = fso.CreateTextFile("c:\testfile.txt", True) 'VB/VBS

f1 = fso.CreateTextFile("c:\\testfile.txt", true); //JS
Const ForWriting = 2
Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True)

var ForWriting= 2;
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);
Const ForWriting = 2
fso.CreateTextFile ("c:\test1.txt")
Set f1 = fso.GetFile("c:\test1.txt")
Set ts = f1.OpenAsTextStream(ForWriting, True)

var ForWriting = 2;
fso.CreateTextFile ("c:\\test1.txt");
f1 = fso.GetFile("c:\\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);

How to add data to a file.

ts.WriteLine("Testing 1, 2, 3.") 
ts.Write ("This is a test.") 

ts.WriteLine("Testing 1, 2, 3.") ;
ts.WriteBlankLines(3) ;
ts.Write ("This is a test.");

Read files. Methods of textstream objects are used: Read(nChars), ReadLine(), ReadAll(), Skip(nChars), SkipLine().

Const ForReading = 1
Set ts = fso.OpenTextFile("c:\testfile.txt", ForReading)
s = ts.ReadLine

var ForReading = 1;
ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
s = ts.ReadLine();

Move, copy, or delete files. The following methods are available:

Task Method
Move a file File.Move() or FileSystemObject.MoveFile()
Copy a file File.Copy() or FileSystemObject.CopyFile()
Delete a file File.Delete() or FileSystemObject.DeleteFile()

Get parent directory and filename. Oddly enough this can't be done using only FSO -- you have to use ASP too.

PathFldrFile = Server.MapPath(Request.ServerVariables("PATH_INFO"))
PathFldr = fso.GetParentFolderName(PathFldrFile)
File = fso.GetFileName(PathFldrFile)

PathFldrFile = Server.MapPath(Request.ServerVariables("PATH_INFO"));
PathFldr = fso.GetParentFolderName(PathFldrFile);
File = fso.GetFileName(PathFldrFile);

Object Details

Here are the properties, methods, etc. of the objects in the FSO object model.

There are 3 collections: Drives, Folders, and Files. They all have the Count and Item properties but Folders also has the Add() method.

Member Member
Drives GetAbsolutePathName(pathspec)
BuildPath(path,strName) GetBaseName(path)
CopyFile(strSource, strDestination[, blnOverwrite]) GetDrive(drivespec)
CopyFolder(strSource, strDestination[, blnOverwrite]) GetDriveName(path)
CreateFolder(strFoldername) GetExtensionName(path)
CreateTextFile(strFilename[, blnOverwrite[, blnUnicode]]) GetFile(filespec)
DeleteFile(filespec[, blnForce]) GetFileName(pathspec)
DeleteFolder(filespec[, blnForce]) GetFileVersion(pathspec)
DriveExists(drivespec) GetFolder(folderspec)
FileExists(filespec) GetParentFolderName(path)
FolderExists(folderspec) GetSpecialFolder(folderspec)
MoveFile(strSource, strDestination) GetStandardStream(standardStreamType [, blnUnicode])
MoveFolder(strSource, strDestination) GetTempName()
OpenTextFile(strFilename[, iomode[, blnCreate[, format]]])  
Member Member
AvailableSpace Path
DriveLetter RootFolder
DriveType SerialNumber
FileSystem ShareName
FreeSpace TotalSize
IsReady VolumeName
Member Member
Attributes Move(destination)
IsRootFolder Name
Files ParentFolder
Drive Path
Delete(force) ShortName
DateLastModified ShortPath
DateLastAccessed Size
DateCreated SubFolders
Copy(destination[, blnOverwrite]) Type
CreateTextFile(strFilename[, blnOverwrite[, blnUnicode]])  
Member Member
Attributes Name
Copy(destination[, blnOverwrite]) OpenAsTextStream([iomode, [format]])
DateCreated ParentFolder
DateLastAccessed Path
DateLastModified ShortName
Delete(force) ShortPath
Drive Size
Move(destination) Type
Member Member
AtEndOfLine Skip(intCharacters)
AtEndOfStream SkipLine()
Close() Write(string)
Column WriteBlankLines(intLines)
Line WriteLine([string])


Here are links that lead to off-site pages about the FSO and VB.

Page Modified: (Hand noted: ) (Auto noted: )