IO
Fontosabb osztályok
Kapcsolataik
Áttekintés
Az Io névtér bemenettel és kimenettel kapcsolatos osztályokat tartalmaz, mint például a File, Directory, Database és Registry.
Minden be- és kimeneti egységhez tartozik egy alrendszer, amely a hozzá kapcsolódó I/O műveletekért felelős. Ezen alrendszerek összességével az alábbi műveletek végezhetők el:
- Fájlműveletek, mint létrehozás, megnyitás, mentés, másolás, mozgatás és törlés.
- Könyvtár műveletek, mint létrehozás, átnevezés, törlés, és a könyvtár tartalom kiolvasása.
- Registry manipuláció, például bejegyzés létrehozása, kiolvasása, név-érték pár törlése.
- Adatbázis rendszer alapvető menedzselése, sémák manipulálása.
Bada fájlrendszer
Minden bada alkalmazáshoz hozzárendelésre kerül egy privát tárhely a fájlrendszeren belül, amikor telepítésre kerül. Ez az alkalmazás Home könyvtára.
Néhány egyszerű szabály a fájlrendszer eléréssel kapcsolatban
- Az eléréshez szükséges metódusok az IO névtérben találhatók
- CWD (Current Working Directory) technika nem támogatott. Rendszer szerte csak az abszolút elérési út engedélyezett.
- Alapesetben a fájlrendszer case-sensitive. Ha a futtatókörnyezet WIN32, akkor a rendszer case-insensitive.
- A könyvtár elválasztójel a perjel "/".
- A maximálisan egyszerre megnyitható kezelők száma: Fájl és adatbázis: 100, könyvtár: 30, registry: nincs.
Az alkalmazások számára elérhető könyvtárak
Könyvtárak és fájlok
A könyvtárak és fájlok hasonlóképpen működnek mint más fájlrendszerekben: a könyvtárak tartalmazhatnak más könyvtárakat és fájlokat.
A DirEnumerator segítségével tudunk végigiterálni a könyvtárakon, hogy információt nyerjünk a bennük tárolt mappákról és fájlokról.
Angol nyelvű példák
Get a list of files and directories in a specific directory.
- Construct a Directory to get the list of specific files in a directory: Directory::Construct(directoryName)
- Use an enumerator to read the list of files: Directory::ReadN()
- Move the DirEnumerator to the first position: DirEnumerator::MoveNext()
- Get a DirEntry to retrieve file information: DirEnumerator::GetCurrentDirEntry()
- Retrieve the file information through the DirEntry:
DirEntry::GetName()
DirEntry::GetFileSize()
DirEntry::IsDirectory()
DirEntry::IsReadOnly()...
- Move the DirEnumerator to the next position: DirEnumerator::MoveNext()
- Repeat steps 4 to 6.
Get different file attributes from a file.
- Get the FileAttributes: File::GetFileAttributes()
- Read the attributes from the FileAttributes: GetDateTime() GetFileSize() GetLastModifiedTime() IsDirectory() IsHidden() IsNomalFile() IsReadOnly() IsSystemFile()
Adatbázis
Mutex biztosítja az adatbáziskezelés szál-biztosságát.
A DbEnumerator felelős az adat visszakeresésért, valamint a sorokon és oszlopokon való iterálásért a visszakapott eredményben.
Angol nyelvű példák
Create a new database with a table.
- Construct a new database: Database::Construct(dbFileName, false)
- Execute SQL to create a table: Database::ExecuteSql(sql, true)
CSAK SQLite kompatibilis parancsok használhatók!
Run a SELECT statement on a table.
- Construct an existing database: Database::Construct(dbFileName, false)
- Create a SQL statement to bind variables: Database::CreateStatementN(sql)
- Bind data to the SQL: DbStatement::BindString(varIndex, string)
- Execute the SQL statement: Database::ExecuteStatementN()
- Move the cursor to the next (first) position: DbEnumerator::MoveNext()
Registry
A regisztrációs adatbázis három szintből épül fel.
- Egy új szakasznak a kezdete a hash szimbólummal van megjelölve (#), és bejegyzések követik.
- A bejegyzések név-érték párokat jelentenek, amelyek Név=Érték alakban vannak írva. Különböző szakaszokban lehetnek azonos nevű bejegyzések, de egy szakaszon belül a bejegyzések nevének egyedinek kell lenni!
- A bejegyzések értékei az alábbi típusokból lehetnek: Integer, Double, Float, String, UuId vagy Bytebuffer.
Angol nyelvű példák
Create a registry section, name-value pair, and read the name-value pair.
- Construct a new Registry: Registry::Construct(regName, true)
- Create a section: Registry::AddSection(secName)
- Add a name-value pair to the new section: Registry::AddValue(secName, entryName, value)
- Get the value from the section using the entry name: Registry::GetValue(secName, entryName, valueOut)