IFileSystem: Difference between revisions
ZeroDegrez (talk | contribs) No edit summary |
ZeroDegrez (talk | contribs) |
||
Line 34: | Line 34: | ||
==Search Files== | ==Search Files== | ||
To | To iterate through a list of files in a given '''Path ID''' you would do the following. | ||
FileFindHandle_t findHandle; | FileFindHandle_t findHandle; |
Revision as of 18:18, 17 April 2006
Here you will find all the information you ever wanted to know about the File System in Source. How to open files, how to read files, how to create new directories and how to find a file on the local system.
My Game Directory
This does not deal specifically with the filesystem, but you might find this useful for your project.
//Server char * pGameDir = new char[1024]; engine->GetGameDir(pGameDir, 1024); //Client const char *pGameDir = engine->GetGameDirectory();
Create Directory
To create a directory you need to know two things; the relative path containing the new directory name and Path ID where the path will be created — called a Path ID because it does not appear to be possible to create a directory using anything other than a search path id.
Default Path Ids
DEFAULT_WRITE_PATH
MOD
GAME
GAMEBIN
char * relpath = new char[1024]; Q_snprintf(relpath, 1024, "stuff\\%s", "newdirectory"); filesystem->CreateDirHierarchy( path, "MOD" );
This code will create a newdirectory
in your stuff
directory, which if does not exist will be created along with newdirectory
inside of your MOD directory.
Open File
Close File
Search Files
To iterate through a list of files in a given Path ID you would do the following.
FileFindHandle_t findHandle; const char *pFilename = filesystem->FindFirstEx( "*.*", "MOD", &findHandle ); while ( pFilename != NULL ) { pFilename = filesystem->FindNext( findHandle ); } filesystem->FindClose( findHandle );
*.*
is wildcard for to match the file against. "MOD"
is the Path ID.