C# - Állománykezelés lehetőségei

forráskód letöltése
Ha olyan feladatunk lenne, hogy programból kell létrehozni, másolni, törölni állományt, vagy ellenőrizni, hogy egy adott állomány létezik-e, vagy csak szeretnénk lekérdezni, hogy mikor lett létrehozva, módosítva, esetleg nem csak lekérdeznénk, hanem be is állítanánk ezeket az értékeke, akkor ennek módját megtudhatjuk a mellékelt cikkből, melyben megismerkedhetünk egy olyan osztállyal, amely képes az állománykezeléssel kapcsolatos feladatokat ellátni.
Ezt a segítséget a File osztálytól kapjuk meg, mely számos statikus függvénnyel rendelkezik, így használatuk igen egyszerű:
AppendText
Osztály: System.IO.File
public static StreamWriter AppendText(
string path
);
Egy szöveges állományt nyithatunk meg olyan célból, hogy adatokat írjunk az állományhoz.
Paraméterek
string path
A megnyitandó állomány nevét, szükség esetén elérési útvonalát kell a path paraméterben megadnunk.
Visszatérési érték
Kapunk egy StreamWriter osztály példányát, melynek segítségével elvégezhetünk az állományba történő írási műveleteket.
Copy
Osztály: System.IO.File
public static void Copy(
string sourceFileName,
string destFileName
);
Egy már meglévő állományt másolhatunk egy másik helyre.
Paraméterek
string sourceFileName
A másolandó állomány nevét, elérési útját adjuk meg a sourceFileName paraméterben.
string destFileName
Az új állomány nevét és új elérési útját adjuk meg a destFileName paraméterben.
Megjegyzés
Ha a destFileName-ben megadott állomány már létezik, akkor hiba keletkezik.
Copy
Osztály: System.IO.File
public static void Copy(
string sourceFileName,
string destFileName,
bool overwrite
);
Egy már meglévő állományt másolhatunk egy másik helyre.
Paraméterek
string sourceFileName
A másolandó állomány nevét, elérési útját adjuk meg a sourceFileName paraméterben.
string destFileName
Az új állomány nevét és új elérési útját adjuk meg a destFileName paraméterben.
bool overwrite
Ha az overwrite paraméter igaz és a destFileName paraméterben megadott állomány már létezik, akkor az figyelmeztetés nélkül felül lesz írva a sourceFileName paraméterben megadott állománnyal.
Create
Osztály: System.IO.File
public static FileStream Create(
string path
);
Új állományt hozhatunk létre a Create függvény hívásával.
Paraméterek
string path
A létrehozandó állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
Egy FileStream osztály példányát kapjuk, melyen keresztül elvégezhetjük a szükséges műveleteket az állományunkkal.
Create
Osztály: System.IO.File
public static FileStream Create(
string path,
int bufferSize
);
Új állományt hozhatunk létre a Create függvény hívásával.
Paraméterek
string path
A létrehozandó állomány elérési útvonalát és nevét adhatjuk meg.
int bufferSize
A bufferSize paraméterben megadhatjuk, hogy mekkora kezdeti memória terület legyen lefoglalva az állomány kezeléséhez.
Visszatérési érték
Egy FileStream osztály példányát kapjuk, melyen keresztül elvégezhetjük a szükséges műveleteket az állományunkkal.
CreateText
Osztály: System.IO.File
public static StreamWriter CreateText(
string path
);
Új szöveges állományt hozhatunk létre a Create függvény hívásával.
Paraméterek
string path
A létrehozandó állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
Egy StreamWriter osztály példányát kapjuk, melyen keresztül elvégezhetjük a szükséges műveleteket az állományunkkal.
Delete
Osztály: System.IO.File
public static void Delete(
string path
);
Egy meglévő állomány törlését végezhetjük el a Delete függvénnyel.
Paraméterek
string path
A törlendő állomány elérési útvonalát és nevét adhatjuk meg.
Exists
Osztály: System.IO.File
public static bool Exists(
string path
);
Egy állomány meglétét ellenőrizhetjük az Exists függvénnyel.
Paraméterek
string path
Az ellenőrizendő állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
Igaz, ha a path paraméterben megadott állomány létezik.
GetAttributes
Osztály: System.IO.File
public static FileAttributes GetAttributes(
string path
);
Egy állomány attribútumait kérdezhetjük le a GetAttributes függvénnyel.
Paraméterek
string path
A szükséges állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
Az állomány attribútumait kapjuk meg FileAttributes típusban, melynek a lehetséges értékei az alábbiak:
  • Archive
  • Compressed
  • Device
  • Directory
  • Encrypted
  • Hidden
  • Normal
  • NotContentIndexed
  • Offline
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • System
  • Temporary
GetCreationTime
Osztály: System.IO.File
public static DateTime GetCreationTime(
string path
);
Egy állomány létrehozásának időpontját kérdezhetjük le a GetCreationTime függvénnyel.
Paraméterek
string path
A szükséges állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
DateTime típusban megkapjuk a path paraméterben megadott állomány létrehozásának időpontját.
GetLastAccessTime
Osztály: System.IO.File
public static DateTime GetLastAccessTime(
string path
);
Egy állomány utolsó hozzáférésének időpontját kérdezhetjük le a GetLastAccessTime függvénnyel.
Paraméterek
string path
A szükséges állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
DateTime típusban megkapjuk a path paraméterben megadott állomány utolsó hozzáférésének időpontját.
GetLastWriteTime
Osztály: System.IO.File
public static DateTime GetLastWriteTime(
string path
);
Egy állomány módosításának időpontját kérdezhetjük le a GetLastWriteTime függvénnyel.
Paraméterek
string path
A szükséges állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
DateTime típusban megkapjuk a path paraméterben megadott állomány módosításának időpontját.
Move
Osztály: System.IO.File
public static void Move(
string sourceFileName,
string destFileName
);
Egy állományt új helyre mozgathatunk, vagy átnevezhetünk a Move függvény hívásával.
Paraméterek
string sourceFileName
A mozgatandó állomány elérési útvonala és neve.
string destFileName
Az új állomány elérési útvonala és neve.
Open
Osztály: System.IO.File
public static FileStream Open(
string path,
FileMode mode
);
Egy állomány megnyitására, létrehozására használhatjuk az Open függvényt.
Paraméterek
string path
A megnyitandó állomány elérési útvonalát és nevét adhatjuk meg.
FileMode mode
Megnevezés Leírás
Append Már létező állomány kerül megnyitásra, hozzáírásra. Megnyitás után az állomány mutató annak végére mutat, így egy írási művelet rögtön az állomány végére ír.
Create Új állomány kerül létrehozásra és megnyitásra. Ha már létezett, akkor az felülírásra kerül.
CreateNew Új állomány kerül létrehozásra. Ha már létezett, akkor hiba keletkezik.
Open Már létező állomány kerül megnyitásra, olvasásra.
OpenOrCreate Ha létezik a megadott állomány, akkor meg lesz nyitva, ha még nem akkor létre lesz hozva.
Truncate Meglévő állomány kerül megnyitásra, de annak tartalma törölve lesz, így megnyitás után egy nulla bájt hosszú állománnyal dolgozhatunk.
Visszatérési érték
Kapunk egy FileStream osztály példányát, melyen keresztül elvégezhetjük a szükséges állomány műveleteket.
Open
Osztály: System.IO.File
public static FileStream Open(
string path,
FileMode mode,
FileAccess access
);
Egy állomány megnyitására, létrehozására használhatjuk az Open függvényt.
Paraméterek
string path
A megnyitandó állomány elérési útvonalát és nevét adhatjuk meg.
FileMode mode
Megnevezés Leírás
Append Már létező állomány kerül megnyitásra, hozzáírásra. Megnyitás után az állomány mutató annak végére mutat, így egy írási művelet rögtön az állomány végére ír.
Create Új állomány kerül létrehozásra és megnyitásra. Ha már létezett, akkor az felülírásra kerül.
CreateNew Új állomány kerül létrehozásra. Ha már létezett, akkor hiba keletkezik.
Open Már létező állomány kerül megnyitásra, olvasásra.
OpenOrCreate Ha létezik a megadott állomány, akkor meg lesz nyitva, ha még nem akkor létre lesz hozva.
Truncate Meglévő állomány kerül megnyitásra, de annak tartalma törölve lesz, így megnyitás után egy nulla bájt hosszú állománnyal dolgozhatunk.
FileAccess access
Megnevezés Leírás
Read Csak olvasható lesz az állomány.
ReadWrite Olvasható, írható lesz az állomány.
Write Csak írható lesz az állomány.
Visszatérési érték
Kapunk egy FileStream osztály példányát, melyen keresztül elvégezhetjük a szükséges állomány műveleteket.
Open
Osztály: System.IO.File
public static FileStream Open(
string path,
FileMode mode,
FileAccess access,
FileShare share
);
Egy állomány megnyitására, létrehozására használhatjuk az Open függvényt.
Paraméterek
string path
A megnyitandó állomány elérési útvonalát és nevét adhatjuk meg.
FileMode mode
Megnevezés Leírás
Append Már létező állomány kerül megnyitásra, hozzáírásra. Megnyitás után az állomány mutató annak végére mutat, így egy írási művelet rögtön az állomány végére ír.
Create Új állomány kerül létrehozásra és megnyitásra. Ha már létezett, akkor az felülírásra kerül.
CreateNew Új állomány kerül létrehozásra. Ha már létezett, akkor hiba keletkezik.
Open Már létező állomány kerül megnyitásra, olvasásra.
OpenOrCreate Ha létezik a megadott állomány, akkor meg lesz nyitva, ha még nem akkor létre lesz hozva.
Truncate Meglévő állomány kerül megnyitásra, de annak tartalma törölve lesz, így megnyitás után egy nulla bájt hosszú állománnyal dolgozhatunk.
FileAccess access
Megnevezés Leírás
Read Csak olvasható lesz az állomány.
ReadWrite Olvasható, írható lesz az állomány.
Write Csak írható lesz az állomány.
FileShare share
Megnevezés Leírás
None Nem kerül megosztásra az állomány, sem a saját, sem más folyamat nem férhet hozzá, annak lezárásáig.
Read Más folyamat is megnyithatja az állományt, de csak olvashat belőle.
ReadWrite Más folyamat is olvashat, írhat az állományba.
Write Más folyamat is megnyithatja az állományt, de csak írhat abba.
Visszatérési érték
Kapunk egy FileStream osztály példányát, melyen keresztül elvégezhetjük a szükséges állomány műveleteket.
OpenRead
Osztály: System.IO.File
public static FileStream OpenRead(
string path
);
Megnyithatunk egy állományt csak olvasásra az OpenRead függvénnyel.
Paraméterek
string path
A megnyitandó állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
Kapunk egy FileStream osztály példányát, melyen keresztül elvégezhetjük a szükséges állomány műveleteket.
Megjegyzés
Ez a megnyitás egyezik a következő paraméterekkel történő Open hívásával: FileMode.Open, FileAccess.Read, FileShare.Read.
OpenText
Osztály: System.IO.File
public static StreamReader OpenText(
string path
);
Megnyithatunk egy UTF-8 kódolású szöveges állományt csak olvasásra.
Paraméterek
string path
A megnyitandó állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
Kapunk egy StreamReader osztály példányát, melyen keresztül elvégezhetjük a szükséges állomány műveleteket.
OpenWrite
Osztály: System.IO.File
public static FileStream OpenWrite(
string path
);
Megnyithatunk egy állományt csak írásra az OpenWrite függvénnyel.
Paraméterek
string path
A megnyitandó állomány elérési útvonalát és nevét adhatjuk meg.
Visszatérési érték
Kapunk egy FileStream osztály példányát, melyen keresztül elvégezhetjük a szükséges állomány műveleteket.
Megjegyzés
Ez a megnyitás egyezik a következő paraméterekkel történő Open hívásával: FileMode.OpenOrCreate, FileAccess.Write, FileShare.None.
SetAttributes
Osztály: System.IO.File
public static void SetAttributes(
string path,
FileAttributes fileAttributes
);
Egy állomány attribútumait beállíthatjuk a SetAttributes függvény hívásával.
Paraméterek
string path
A szükséges állomány elérési útvonalát és nevét adhatjuk meg.
FileAttributes fileAttributes
  • Archive
  • Compressed
  • Device
  • Directory
  • Encrypted
  • Hidden
  • Normal
  • NotContentIndexed
  • Offline
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • System
  • Temporary
Megjegyzés
Több attribútum egyidejűleg is beállítható azok kombinációjával:
 File.SetAttributes("a.txt", FileAttributes.ReadOnly | FileAttributes.Hidden);
SetCreationTime
Osztály: System.IO.File
public static void SetCreationTime(
string path,
DateTime creationTime
);
Egy állomány létrehozási időpontja beállítható a SetCreationTime függvénnyel.
Paraméterek
string path
A szükséges állomány elérési útvonalát és nevét adhatjuk meg.
DateTime creationTime
A beállítandó időpontot adjuk meg a creationTime paraméterben.
SetLastAccessTime
Osztály: System.IO.File
public static void SetLastAccessTime(
string path,
DateTime lastAccessTime
);
Egy állomány utolsó hozzáférési időpontja beállítható a SetLastAccessTime függvénnyel.
Paraméterek
string path
A szükséges állomány elérési útvonalát és nevét adhatjuk meg.
DateTime lastAccessTime
A beállítandó időpontot adjuk meg a lastAccessTime paraméterben.
SetLastWriteTime
Osztály: System.IO.File
public static void SetLastWriteTime(
string path,
DateTime lastWriteTime
);
Egy állomány módosítási időpontja beállítható a SetLastAccessTime függvénnyel.
Paraméterek
string path
A szükséges állomány elérési útvonalát és nevét adhatjuk meg.
DateTime lastWriteTime
A beállítandó időpontot adjuk meg a lastWriteTime paraméterben.
A példaprogram
Térjünk át most a gyakorlatra és nézzük meg, hogy miként is használható fel a File osztály nyújtotta lehetőségek. Mellékelt példában létrehozunk egy A és B nevű mappát. Az A-ban létrehozunk egy szöveges állományt, melyet másolunk a B-be és különféle műveleteket hajtunk végre a létrejött állományokon.
1. gomb
Létrehozunk egy 1.txt nevű állományt az A mappába.
    private void button1_Click(object sender, System.EventArgs e)
    {
      sw=File.CreateText(label1.Text+"1.txt");
    }
2. gomb
Az imént létrehozott 1.txt-be írunk a StreamWriter osztály segítségével, majd lezárjuk azt.
    private void button2_Click(object sender, System.EventArgs e)
    {
      sw.WriteLine("http://www.SoftwareOnline.hu");
      sw.Close();
    }
3. gomb
Az 1.txt-t másoljuk át a B mappába a.txt és b.txt állományokba.
    private void button3_Click(object sender, System.EventArgs e)
    {
      File.Copy(label1.Text+"1.txt", label2.Text+"a.txt");
      File.Copy(label1.Text+"1.txt", label2.Text+"b.txt");
    }
3. gomb
Ellenőrizzük, hogy létezik-e a b.txt és ha igen töröljük azt.
    private void button4_Click(object sender, System.EventArgs e)
    {
      if (File.Exists(label2.Text+"b.txt"))
      {
        File.Delete(label2.Text+"b.txt");
      }
    }
4. gomb
Az AppendText hívásával megnyitjuk az 1.txt és hozzáírunk még egy sornyi szöveget.
    private void button5_Click(object sender, System.EventArgs e)
    {
      StreamWriter writer = File.AppendText(label1.Text+"1.txt");
      writer.WriteLine("http://mecsek.animare.hu");
      writer.Close();
    }
5. gomb
Az a.txt-re beállítjuk a csak olvasható és rejtett attribútumokat.
    private void button6_Click(object sender, System.EventArgs e)
    {
      File.SetAttributes(label2.Text+"a.txt", FileAttributes.ReadOnly | FileAttributes.Hidden);
    }
6. gomb
Ellenőrzésképpen le is kérdezzük, hogy az a.txt milyen attribútumokkal rendelkezik.
    private void button7_Click(object sender, System.EventArgs e)
    {
      FileAttributes fa = File.GetAttributes(label2.Text+"a.txt");
    }
7. gomb
Végül az 1.txt-nek megváltozhatjuk a létrehozási időpontját egy általunk kiválasztott dátumra. (A Windows Intézőjében az utolsó módosítás időpontja látható alapértelmezett helyzetben , így ha ellenőrizni akarjuk a létrehozás időpontját, akkor ennek láthatóságát külön kell engedélyeznünk az Intézőben.)
    private void button8_Click(object sender, System.EventArgs e)
    {
      DateTime dt = new DateTime(2001, 6, 29, 16, 30, 0);
      File.SetCreationTime(label1.Text+"1.txt", dt);
    }