Wszystkie niezbędne metody i klasy związane z zapisem i odczytem danych z pliku znajdują się w przestrzeni nazw:
using System.IO
Oczywiście zapis i odczyt może odbywać się binarnie lub tekstowo.
Sprawdzanie, czy plik istnieje metodą System.IO.File.Exists
W przestrzeni nazw System.IO.File zapisano wiele przydatnych metod statycznych, wśród których znajduje się metoda System.IO.File.Exists. Oto sposób jej wykorzystania w celu sprawdzenia, czy dany plik już istnieje:
if (System.IO.File.Exists("file.txt"))
{
Console.WriteLine("Istnieje!");
}
Zapis danych tekstowych za pomocą klasy System.IO.StreamWriter
Klasa System.IO.StreamWriter została stworzona tylko i wyłącznie w celu odczytywania danych, nie można tutaj więc ustawić opcji odczyt + zapis jednocześnie. Oto sposób zapisu danych do pliku tekstowego za pomocą tej klasy:
var file = new System.IO.StreamWriter("file.txt", false, System.Text.Encoding.UTF8); // tworzenie pliku file.txt, false - oznacza bez dopisywania, System.Text.Encoding.UTF8 - kodowanie utf8
file.WriteLine("Coś tam do zapisania"); // zapisuje tekst i dodaje na jego końcu znak przejścia do nowej linii
file.Write("tekst do zapisanie"); // zapisuje tekst bez dodawania znaku końca linii
file.Close(); // po zakończeniu zapisywania trzeba grzecznie zamknąć plik
Odczyt danych tekstowych za pomocą klasy System.IO.StreamReader
Klasa System.IO.StreamReader została stworzona tylko i wyłącznie w celu odczytywania danych, nie można tutaj więc ustawić opcji odczyt + zapis jednocześnie. Oto sposób zapisu danych do pliku tekstowego za pomocą tej klasy:
var file2 = new System.IO.StreamReader("file.txt", System.Text.Encoding.UTF8);
Console.WriteLine(file2.ReadLine()); // wczytywanie pojedynczej linii tekstu i wyświetlania na ekranie
Console.WriteLine(file2.ReadToEnd()); // wczytywanie od bieżącej pozycji do końca pliku i wyświetlanie w konsoli
file2.Close();
Wczytywanie całego pliku linijka po linijce:
var file2 = new System.IO.StreamReader("file.txt", System.Text.Encoding.UTF8);
string text;
do{
text = file2.ReadLine(); // wczytywanie linii tekstu
if(text != null)
Console.WriteLine(text); // wyświetlanie
}while(text != null); // dopuki text nie jest równy null powtarzaj tą czynność
file2.Close();
Wczytywanie danych tekstowych za pomocą metod statycznych zawartych w System.IO.File
Za pomocą metody statycznej System.IO.File.ReadAllText można wczytać cały tekst zawarty w pliku:
var path = "file.txt";
if (System.IO.File.Exists(path))
{
string text = System.IO.File.ReadAllText(path, System.Text.Encoding.UTF8);
}
Console.WriteLine(text);
Za pomocą metody statycznej System.IO.File.ReadAllLines można wczytać tablicę linii tekstu, jakie ten plik zawiera:
var path = "file.txt";
if (System.IO.File.Exists(path))
{
string[] text;
text = System.IO.File.ReadAllLines(path, System.Text.Encoding.UTF8);
foreach (string t in text)
Console.WriteLine(t);
}
Zapisywanie danych tekstowych za pomocą metod statycznych zawartych w System.IO.File
Dzięki metodzie statycznej System.IO.File.WriteAllText można zapisywać tekst zawarty w zmiennej tekstowej do pliku:
var path = "file.txt";
var text = "Jakiś tam tekst do zapisania\r\nI jeszcze jedna linijka tekstu";
if (System.IO.File.Exists(path))
{
System.IO.File.WriteAllText(path, text, System.Text.Encoding.UTF8);
}
Natomiast metoda statyczna System.IO.File.WriteAllLines umożliwia zapisywanie linii tekstu zapisanych w tablicy:
var path = "file.txt";
string[] text_table = { "Jakiś tekst do zapisania", "w pliku" };
if (System.IO.File.Exists(path))
{
System.IO.File.WriteAllLines(path, text_table, System.Text.Encoding.UTF8);
}
Zapis i odczyt danych bajtowych za pomocą klasy System.IO.FileStream
Wczytywanie danych bitowych:
var path = "file.txt";
if (System.IO.File.Exists(path))
{
var fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
var b = new byte[fs.Length];
fs.Read(b, 0, (int)fs.Length);
fs.Close();
string text = System.Text.Encoding.UTF8.GetString(b);
Console.WriteLine(text);
}
Zapisywanie danych bitowych:
var path = "file.txt";
if (System.IO.File.Exists(path))
{
var fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Write);
byte[] b = System.Text.Encoding.UTF8.GetBytes("Jakiś tekst do zapisania");
fs.Write(b, 0, (int)b.Length);
fs.Close();
}
Wczytywanie danych bitowych za pomocą metody statycznej System.IO.File.ReadAllBytes
Oto, jak można wczytać cały blok danych bajtowych:
var path = "file.txt";
if (System.IO.File.Exists(path))
{
byte[] b = System.IO.File.ReadAllBytes(path);
string text = System.Text.Encoding.UTF8.GetString(b);
Console.WriteLine(text);
}
Zapisywanie danych bitowych za pomocą metody statycznej System.IO.File.WriteAllBytes
Zapisywanie danych bajtowych w pliku:
if (System.IO.File.Exists(path))
{
byte[] b = System.Text.Encoding.UTF8.GetBytes("Jakiś tekst do zapisania");
System.IO.File.WriteAllBytes(path, b);
}