Práce se soubory v C#: I/O Operations [Příklady]
C# má širokou škálu operací se soubory. Tyto operace zahrnují otevření souboru, čtení nebo zápis do souboru. Mohou nastat případy, kdy chcete pracovat se soubory přímo, v takovém případě byste použili operace se soubory dostupné v C#. Některé ze základních operací se soubory jsou uvedeny níže.
- Čtení – Tato operace je základní čtecí operací, při které se načítají data ze souboru.
- Zápis – Tato operace je základní operací zápisu, při které se data zapisují do souboru. Ve výchozím nastavení je veškerý existující obsah ze souboru odstraněn a je zapsán nový obsah.
- Připojení – Tato operace také zahrnuje zápis informací do souboru. Jediný rozdíl je v tom, že stávající data v souboru nejsou přepsána. Nová data, která mají být zapsána, jsou přidána na konec souboru.
Základní I/O příkazy
C# a .Net umí pracovat se soubory pomocí několika příkazů File I/O. Pojďme se podívat na některé z těchto příkazů. Pro náš příklad budeme předpokládat, že máme na jednotce D soubor s názvem Example.txt.
Soubor bude jednoduchý textový soubor a bude mít 2 řádky, jak je uvedeno níže
- Guru99 – .Net
- Guru99 -C#
Pro náš příklad vytvoříme jednoduchou aplikaci Console a budeme pracovat s našimi příkazy File I/O. Konzolová aplikace je základní aplikací, která byla vytvořena v dřívějším tutoriálu. V konzolové aplikaci je veškerý kód zapsán do souboru program.cs.
Soubor existuje
Metoda Soubor existuje se používá ke kontrole, zda konkrétní soubor existuje. Nyní se tedy podívejme na kód, který lze použít ke kontrole, zda náš soubor Example.txt existuje nebo ne. Zadejte níže uvedený kód do souboru program.cs.
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; if (File.Exists(path)) { Console.WriteLine("File Exists"); } Console.ReadKey(); } } }
Vysvětlení kódu:-
- Nejprve nastavujeme řetězcovou proměnnou s cestou k našemu souboru Example.txt.
- Dále použijeme metodu File.Exists ke kontrole, zda soubor existuje nebo ne. Pokud soubor existuje, bude vrácena hodnota true.
- Pokud získáme hodnotu true a soubor existuje, zapíšeme do konzole zprávu „File Exists“.
Když je nastaven výše uvedený kód a projekt je spuštěn pomocí sady Visual Studio, získáte níže uvedený výstup.
Výstup:-
Z výše uvedeného výstupu můžete vidět, že příkaz File.Exists byl úspěšně proveden a v okně konzoly se zobrazila správná zpráva.
File.ReadAlllines
Metoda se používá ke čtení všech řádků jeden po druhém v souboru. Řádky jsou pak uloženy v proměnné pole řetězců. Podívejme se na příklad. Zadejte níže uvedený kód do souboru program.cs.
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; String[] lines; lines = File.ReadAllLines(path); Console.WriteLine(lines[0]); Console.WriteLine(lines[1]); Console.ReadKey(); } } }
Vysvětlení kódu:-
- Nejprve deklarujeme proměnnou pole řetězců. To bude použito k uložení výsledku, který bude vrácen metodou File.ReadAllLines.
- Dále použijeme metodu File.ReadAllLines k přečtení všech řádků z našeho textového souboru. Výsledek je pak předán do proměnné lines.
- Protože víme, že náš soubor obsahuje pouze 2 řádky, můžeme k hodnotě proměnných pole přistupovat pomocí příkazu lines[0] a lines[1].
Když je nastaven výše uvedený kód a projekt je spuštěn pomocí Visual Studio, získáte níže uvedený výstup.
Výstup:-
Z výstupu můžete vidět, že příkaz File.ReadAllLines vrátil oba řádky z našeho souboru Example.txt
File.ReadAllText
Tato metoda se používá ke čtení všech řádků v souboru najednou. Řádky jsou pak uloženy v řetězcové proměnné. Podívejme se na příklad. Zadejte níže uvedený kód do souboru program.cs.
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; String lines; lines = File.ReadAllText(path); Console.WriteLine(lines); Console.ReadKey(); } } }
Vysvětlení kódu:-
- Nejprve deklarujeme řetězcovou proměnnou s názvem Lines. To bude použito k uložení výsledku, který bude vrácen metodou File.ReadAllText.
- Dále použijeme metodu File.ReadAllText k přečtení všech řádků z našeho textového souboru. Výsledek je pak předán do proměnné lines.
- Pro zobrazení hodnoty proměnné Lines můžeme přímo použít metodu Console.Writeline.
Když je nastaven výše uvedený kód a projekt je spuštěn pomocí sady Visual Studio, získáte níže uvedený výstup.
Výstup:-
Z výstupu můžete vidět, že příkaz File.ReadAlltext vrátil oba řádky z našeho souboru Example.txt
Soubor.Kopírovat
Metoda se používá k vytvoření kopie existujícího souboru. Podívejme se na příklad. Zadejte níže uvedený kód do souboru program.cs.
using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; String copypath = @"D:\ExampleNew.txt"; File.Copy(path,copypath); Console.ReadKey(); } } }
Vysvětlení kódu:-
- Nejprve deklarujeme řetězcovou proměnnou s názvem path. Toto bude umístění našeho souboru Example.txt. Tento soubor bude zdrojovým souborem použitým pro operaci kopírování.
- Dále deklarujeme řetězcovou proměnnou nazvanou copypath. Toto bude umístění nového souboru s názvem ExampleNew.txt file. Toto bude cílový soubor, do kterého bude obsah zapsán ze zdrojového souboru Example.txt.
- Poté zavoláme metodu File.Copy pro zkopírování souboru Example.txt do souboru ExampleNew.txt.
Když je nastaven výše uvedený kód a projekt je spuštěn pomocí sady Visual Studio, soubor Example.txt se zkopíruje do ExampleNew.txt.
Soubor.Odstranit
Metoda se používá k odstranění existujícího souboru. Podívejme se na příklad. Zadejte níže uvedený kód do souboru program.cs.
using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; File.Delete(path); Console.ReadKey(); } } }
Vysvětlení kódu:-
- Nejprve deklarujeme řetězcovou proměnnou s názvem path. Toto bude umístění našeho souboru Example.txt. Toto je soubor, který bude smazán.
- Dále zavoláme metodu File.Delete k odstranění souboru.
Po nastavení výše uvedeného kódu a spuštění projektu pomocí sady Visual Studio bude soubor Example.txt z jednotky D odstraněn.
Shrnutí
- C# má řadu operací se soubory, které lze provádět se soubory. Většina těchto operací je součástí třídy File.
- Pokud chcete číst data ze souboru, můžete použít metody File.ReadAlltext nebo File.ReadAllLines.
Metoda souboru | Description |
---|---|
Soubor existuje | Metoda File exists se používá ke kontrole, zda konkrétní soubor existuje. |
File.ReadAlllines | Metoda se používá ke čtení všech řádků jeden po druhém v souboru. |
File.ReadAllText | Tato metoda se používá ke čtení všech řádků v souboru najednou. |
Soubor.Kopírovat | Metoda se používá k vytvoření kopie existujícího souboru. |
Soubor.Odstranit | Metoda se používá k odstranění existujícího souboru. |