Programování
Soubory a Souborový systém
V jazyce C# můžete pracovat se soubory a souborovým systémem pomocí tříd a metod v rámci knihovny System.IO

Cteni Souboru
    
       
using System.IO;        

// Tato metoda načte celý soubor do paměti jako jeden řetězec.

string text = File.ReadAllText("cesta_k_souboru");


//Pokud chcete načíst soubor řádek po řádku, můžete použít metodu ReadLines nebo ReadAllLines:

foreach (string line in File.ReadLines("cesta_k_souboru"))
{
    Console.WriteLine(line);
}

    
    
Zapis do Souboru
    
        
using System.IO;


/*
Tato metoda vytvoří nový soubor, zapíše zadaný řetězec do souboru a poté soubor uzavře. 
Pokud soubor již existuje, je nahrazen.
*/
File.WriteAllText("cesta_k_souboru", "text k zapsání");


//Pokud chcete přidat text k existujícímu souboru, můžete použít metodu AppendAllText:

File.AppendAllText("cesta_k_souboru", "text k přidání");
    
    
Tyto metody jsou jednoduché a pohodlné, ale nejsou vhodné pro velké soubory, protože načítají celý soubor do paměti. Pro práci s velkými soubory je lepší použít StreamReader pro čtení a StreamWriter pro zápis. Tyto třídy poskytují více kontroly a jsou efektivnější pro práci s velkými daty.
Používání streamwriter a
streamreader
streamreader
Tento kód otevře soubor, přečte ho řádek po řádku a vypíše každý řádek na konzoli. Použití using zajišťuje, že soubor se správně uzavře po dokončení čtení.
    
using System.IO;

using (StreamReader sr = new StreamReader("cesta_k_souboru"))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}
    
    
streamwriter
Tento kód otevře soubor a zapíše do něj řádek textu. Pokud soubor již existuje, je přepsán. Pokud chcete přidat text k existujícímu souboru, můžete použít konstruktor StreamWriter s parametrem true:
    
using System.IO;

// Přepsání

using (StreamWriter sw = new StreamWriter("cesta_k_souboru"))
{
    sw.WriteLine("text k zapsání");
}

// Přidávání

using (StreamWriter sw = new StreamWriter("cesta_k_souboru", true))
{
    sw.WriteLine("text k přidání");
}

    
    
Více informací: It Network
file.Close() a .Flush()
File.Close() Metoda Close se používá k uzavření souboru, který je otevřený pro čtení nebo zápis. Po zavolání metody Close již nelze provádět žádné další operace se souborem. Pokud se pokusíte provést další operaci se souborem po jeho uzavření, dojde k výjimce.
    
StreamReader sr = new StreamReader("cesta_k_souboru");
// čtení ze souboru
sr.Close();
    
    
File.Flush() Metoda Flush se používá k vyprázdnění vyrovnávací paměti (buffer) a zajištění, že všechna data byla zapsána do cílového souboru nebo proudu. Tato metoda je užitečná, pokud potřebujete zajistit, že všechna data byla zapsána, ale nechcete ještě soubor uzavřít.
    
StreamWriter sw = new StreamWriter("cesta_k_souboru");
// zápis do souboru
sw.Flush();
    
    
Při použití StreamWriter nebo StreamReader v bloku using se metody Close a Flush automaticky zavolají, když je blok using opuštěn. To je důvod, proč se často doporučuje používat blok using při práci se soubory v C#.
Více informací: StackOverflow
Další užitečné metody
File.Exists()
Tato metoda kontroluje, zda soubor existuje na dané cestě.
    
bool exists = File.Exists("cesta_k_souboru");
    
    
Directory.CreateDirectory()
Tato metoda vytvoří nový adresář. Pokud adresář již existuje, nic se nestane.
    
Directory.CreateDirectory("cesta_k_adresari");
    
    
Directory.Exists()
Tato metoda kontroluje, zda adresář existuje na dané cestě.
    
bool exists = Directory.Exists("cesta_k_adresari");
    
    
File.Copy() a File.Move()
Tyto metody kopírují nebo přesouvají soubor z jedné cesty na druhou.
    
File.Copy("cesta_zdrojoveho_souboru", "cesta_ciloveho_souboru");
File.Move("cesta_zdrojoveho_souboru", "cesta_ciloveho_souboru");
    
    
File.Delete() a Directory.Delete()
Tyto metody odstraní soubor nebo adresář.
    
File.Delete("cesta_k_souboru");
Directory.Delete("cesta_k_adresari");
    
    
Directory.GetFiles() a Directory.GetDirectories()
Tyto metody vracejí seznam souborů nebo adresářů v daném adresáři.
    
string[] files = Directory.GetFiles("cesta_k_adresari");
string[] directories = Directory.GetDirectories("cesta_k_adresari");
    
    
CSV, XML a JSON
CSV
CSV (Comma Separated Values) soubory jsou jednoduché textové soubory, které obsahují tabulková data. Každý řádek v souboru představuje jeden záznam a jednotlivé hodnoty jsou odděleny čárkami.
    
using System.IO;
using System.Linq;

var lines = File.ReadAllLines("cesta_k_souboru.csv");
foreach (var line in lines)
{
    var values = line.Split(',');
    // zpracování hodnot
}
    
    
XML
XML (eXtensible Markup Language) je formát pro strukturovaná data. V C# můžete použít třídy v rámci System.Xml nebo System.Xml.Linq pro zpracování XML souborů.
    
using System.Xml.Linq;

var doc = XDocument.Load("cesta_k_souboru.xml");
foreach (var element in doc.Descendants("nazev_elementu"))
{
    // zpracování elementu
}

    
    
JSON
JSON (JavaScript Object Notation) je lehký formát pro výměnu dat. V C# můžete použít knihovnu Newtonsoft.Json pro zpracování JSON souborů.
    
using Newtonsoft.Json;

var obj = JsonConvert.DeserializeObject<MyClass>(File.ReadAllText("cesta_k_souboru.json"));
// zpracování objektu
    
    
Více informací: myhalo.com
File info
DirectoryInfo
DriveInfo
FileInfo
poskytuje metody a vlastnosti pro manipulaci se soubory.
    
FileInfo fi = new FileInfo("cesta_k_souboru");
long size = fi.Length; // velikost souboru v bajtech
DateTime creationTime = fi.CreationTime; // datum a čas vytvoření souboru (třeba)


    
    
DirectoryInfo
Třída DirectoryInfo poskytuje metody a vlastnosti pro manipulaci s adresáři. Například:
    
DirectoryInfo di = new DirectoryInfo("cesta_k_adresari");
DateTime creationTime = di.CreationTime; // datum a čas vytvoření adresáře
FileInfo[] files = di.GetFiles(); // pole souborů v adresáři

    
    
DriveInfo
Třída DriveInfo poskytuje informace o jednotkách disku v systému. Například:
    
DriveInfo di = new DriveInfo("C");
long totalSpace = di.TotalSize; // celkový prostor na disku v bajtech
long freeSpace = di.TotalFreeSpace; // volný prostor na disku v bajtech