A fájlkezelést két részre kell bontani. Hasonlóan a könyvtárak kezeléséhez, információkat nyerhetünk a fájlokról, törölhetjük, áthelyezhetjük őket, újakat hozhatunk létre. Ezt fájlrendszer szintű kezelésnek nevezzük, mert alapvetően ezeket a szolgáltatásokat az operációs rendszer biztosítja a fájlrendszer segítségével. Fájlkezelés esetén a másik kategória a tartalom módosítására irányuló kezelési lehetőségek.
A fájlkezelés fő megvalósító osztálya a File statikus osztály. Az osztály számos metódust tartalmaz fájlrendszer szintű kezeléshez. Ezek közül a legfontosabbak:
Fájrendszer szintű kezelés
void Copy(string sourceFileName, string destFileName);
void Copy(string sourceFileName, string destFileName, bool overwrite);
Fájl másolása. Az első paraméter a forrás fájl útvonala, a második paraméter a cél fájl útvonala. A három paraméteres változatban, ha a 3. paraméter igaz, akkor a fájl felülírásra kerül, ha az létezik.
Megjegyzés: Ha a cél útvonal egy része nem létezik, akkor a metódus nem hozza létre a mappa struktúrát, helyette kivétel keletkezik.
void Delete(string path);
Fájl törlése. A paraméter a törlendő fájl útvonala. Megjegyzés: Ez a metódus TÉNYLEGES törlést hajt végre, vagyis a fájl nem kerül be a lomtárba.
void Move(string sourceFileName,string destFileName);
Fájl áthelyezése, vagy átnevezése. Az első paraméter a forrás fájl útvonala, a második paraméter a cél fájl útvonala.
bool Exists(string path);
Igaz értéket ad vissza, ha a paraméterként megadott útvonalon a fájl létezik.
void Replace(string sourceFileName, string destinationFileName,
string destinationBackupFileName);
void Replace(string sourceFileName, string destinationFileName,
string destinationBackupFileName, bool ignoreMetadataErrors);
Létező fájl lecserélése, közben biztonsági másolat készítése. Első paramétere a forrás fájl, második paramétere a cél fájl, harmadik paramétere pedig az eredeti fájlról készítendő biztonsági másolat neve. Ha a négy paraméteres változatát alkalmazzuk és a negyedik paraméter igaz értékű, akkor nem kapunk kivételt, ha a csere közben nem sikerült ugyanazokat a jogokat és meta adatokat beállítani, mint az eredetin.
FileAttributes GetAttributes(string path)
Fájl attribútumainak lekérdezése. A visszaadott enum lehetséges értékeit a könyvtár kezelésnél tárgyaltuk.
DateTime GetCreationTime(string path);
DateTime GetCreationTimeUtc(string path);
A paraméterként kapott fájl létrehozásának az idejét adja vissza helyi időben, az Utc változat pedig UTC időzónában.
DateTime GetLastAccessTime(string path);
DateTime GetLastAccessTimeUtc(string path);
A paraméterként kapott fájl utolsó hozzáférésének az idejét adja vissza helyi időben, az Utc változat pedig UTC időzónában.
DateTime GetLastWriteTime(string path);
DateTime GetLastWriteTimeUtc(string path);
A paraméterként kapott fájl utolsó módosításának az idejét adja vissza helyi időben, az Utc változat pedig UTC időzónában.
void SetCreationTime(string path, DateTime creationTime);
void SetCreationTimeUtc(string path, DateTime creationTimeUtc);
Fájl létrehozási idejének beállítása. Az első paraméter a fájl útvonalát határozza meg, a második paraméter pedig az időt. Az Utc változatnál az idő UTC időzónában kerül értelmezésre.
void SetLastAccessTime(string path, DateTime lastAccessTime);
void SetLastAccessTimeUtc(string path, DateTime lastAccessTimeUtc);
Fájl utolsó hozzáférési idejének beállítása. Az első paraméter a fájl útvonalát határozza meg, a második paraméter pedig az időt. Az Utc változatnál az idő UTC időzónában kerül értelmezésre.
void SetLastWriteTime(string path, DateTime lastWriteTime);
void SetLastWriteTimeUtc(string path, DateTime lastWriteTimeUtc);
Fájl utolsó írási idejének beállítása. Az első paraméter a fájl útvonalát határozza meg, a második paraméter pedig az időt. Az Utc változatnál az idő UTC időzónában kerül értelmezésre.
Fájlok tartalmi kezelése
A fájlok részletes tartalmi kezelésével majd egy későbbi fejezet foglalkozik. Itt csak érintőlegesen tárgyaljuk a keretrendszer lehetőségeit.
void AppendAllLines(string path, IEnumerable<string> contents);
void AppendAllLines(string path, IEnumerable<string> contents, Encoding encoding);
Egy meglévő szöveges fájl végéhez hozzáfűz újabb sorokat. Az első paraméter a fájl nevét határozza meg, a második paraméter pedig a hozzáfűzendő sorokat. Ha a harmadik paraméter is adott, akkor az a sorok karakterkódolását befolyásolja.
void AppendAllText(string path, string contents);
void AppendAllText(string path, string contents, Encoding encoding);
Egy meglévő szöveges fájl végéhez hozzáfűz egy szöveget. Az első paraméter a fájl nevét határozza meg, a második paraméter pedig a hozzáfűzendő szöveget. Ha a harmadik paraméter is adott, akkor az a szöveg kódolását befolyásolja.
StreamWriter AppendText(string path);
Fájl megnyitása szövegek hozzáfűzésére. Visszatérési értéke egy StreamWriter, amivel szöveges módon tudjuk kezelni a fájlt.
FileStream Create(string path);
Fájl létrehozása. Visszatérési értéke egy FileStream, amivel bináris módon tudjuk kezelni a fájlt.
StreamWriter CreateText(string path);
Fájl létrehozása. Visszatérési értéke egy StreamWriter, amivel szöveges módon tudjuk kezelni a fájlt.
FileStream OpenRead(string path);
Fájl megnyitása olvasásra. Visszatérési értéke egy FileStream, amivel bináris módon tudjuk kezelni a fájlt.
StreamReader OpenText(string path);
Fájl megnyitása szöveges olvasásra. Visszatérési értéke egy StreamReader, amivel szöveges módon tudjuk kezelni a fájlt.
FileStream OpenWrite(string path);
Fájl megnyitása írásra. Visszatérési értéke egy FileStream, amivel bináris módon tudjuk kezelni a fájlt.
byte[] ReadAllBytes(string path);
A fájl teljes tartalmának beolvasása egy byte tömbbe.
string[] ReadAllLines(string path);
string[] ReadAllLines(string path,Encoding encoding);
A fájlban található összes sor beolvasása egy string[] tömbbe. A tömb elemei a fájl sorai lesznek.
string ReadAllText(string path);
string ReadAllText(string path, Encoding encoding);
A fájlban található szöveg beolvasása egy string változóba. Két paraméteres változatában a második paraméter a karakterkódolást határozza meg.
IEnumerable<string> ReadLines(string path);
IEnumerable<string> ReadLines(string path, Encoding encoding);
A fájlban található összes sor beolvasása. A sorok foreach ciklussal lesznek bejárhatóak. Két paraméteres változatában a második paraméter a karakterkódolást határozza meg.
void SetAttributes(string path, FileAttributes fileAttributes);
A fájl attribútumainak beállítása.
void WriteAllBytes(string path, byte[] bytes);
Egy byte[] tömb teljes tartalmának kiírása egy bináris fájlba.
void WriteAllLines(string path, IEnumerable<string> contents);
void WriteAllLines(string path, IEnumerable<string> contents, Encoding encoding);
Sorok írása egy fájlba. A harmadik paraméter a karakterkódolást határozza meg.
void WriteAllText(string path, string contents);
void WriteAllText(string path, string contents, Encoding encoding);
Szöveg írása egy fájlba. A harmadik paraméter a karakterkódolást határozza meg.