Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach Obsługa plików w C# Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Dodaj przestrzeń nazw Using.System.IO To w niej znajdują się klasy, których będziemy używać do operacjach na plikach.
Jak z programu utworzyć folder, np. na pulpicie? Directory.CreateDirectory(@"C:\Users\natal\Desktop\FOLDERTESTOWY2"); Jako argument metody podajemy ścieżkę, gdzie chcemy utworzyć folder. W moim przypadku folder utworzy się na pulpicie i będzie miał nazwę FOLDERTESTOWY2 Czy wiesz do czego służy @ przed nazwą ścieżki?
Jak usunąć plik lub folder? File.Delete(fileName); np: File.Delete(@"C:\Users\natal\Desktop\plik5.txt"); Directory.Delete(dirName); np: Directory.Delete(@"C: \Users\natal\Desktop\FOLDERTESTOWY2");
Jak szybko zapisać łańcuch tekstowy do pliku? string text = "fdffsdfsdfdsfdfsdfsdfdfdfdsdfdfsdfsdffsdfsd"; File.WriteAllText(@"C:\Users\natal\Desktop\plik5.txt", text); Klasa File udostępnia metodę pozwalającą zapisać cały plik tekstowy wraz z zawartością. Klasa File dostarcza nam metody statyczne, które pozwalają nam Operować na plikach.
Strumienie - Stream C# używa strumieni do odczytu i zapisu danych. FileStream – pozwala na zapis i odczyt danych w pliku Możesz: - Zapisać dane binarne lub tekstowe do strumienia : metoda Write() Odczytać dane ze strumienia: metoda Read()
StreamWriter – zapis tekstu do pliku C# udostepnia klasę StreamWriter, która w prosty sposób pozwala na zapis testu. StreamWriter writer = new StreamWriter(@”C:/Folder”, true); //true – dopisanie do pliku na koniec, false – usunięcie bieżącego pliku i wpisanie do nowego writer.WriteLine(„Tutaj jest tekst”); // PAMIĘTAJ O ZAMKIĘCIU PLIKU, GDY KOŃCZYSZ OPERACJĘ writer.Close();
Wpisz zawartość tablicy do pliku string pathString = @”MyPath”; string[] lines = {"aaa","ssss","bbbb","ddddd","xxxx" }; using (StreamWriter file = new StreamWriter(pathString)) { foreach (string line in lines) file.WriteLine(line); }
StreamReader – odczyt z pliku StreamReader sr = new StreamReader(@"C:\Users\natal\Desktop\plik5.txt"); string line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } sr.Close(); // Metoda ReadLine() pobiera w każdej kolejnej iteracji jedną linię tekstu z // naszego pliku, aż do momentu EOF – End Of File
Korzystanie z instrukcji using To nie jest to samo Using co przy przestrzeniach nazw! Pozwala nam unikać błędów, np. związanych z niezamknięciem pliku, ponieważ robi to automatycznie. using (StreamReader sr = new StreamReader("TestFile.txt")) { string line; // Read and display lines from the file until the end of // the file is reached. while ((line = sr.ReadLine()) != null) Console.WriteLine(line); }
Dlaczego instrukcja using działa i skad wie, że trzeba zamknąć plik? Klasa StreamWriter implementuje interfejs Idisposable i zamyka tworzony plik w efekcie wywołania metody Dispose(); Możemy umieścić wszystkie operacje na pliku w bloku using i mieć pewność, że zostanie on zamknięty nawet w przypadku zgłoszenia wyjątku.
Zadania #0 Napisz metody: void Read(string file) { } void Write(string file) { } Czy te metody będą statyczne?
Zadania #1 Utwórz plik, w którym w kilku wierszach dodasz jakieś liczby. Z tych liczb wybierz liczby parzyste i zapisz je do nowego pliku.
Zadania #2 Utwórz na pulpicie folder Sklep Utwórz liste asortyment w którym dodasz kilka produktów. Zapisz produkty z listy do pliku asortyment.txt.
Zadania #3 Utwórz liste o nazwie kupic i dodaj kilka produktów, które się skończyły i musisz je kupic.
Zadanie #4 Sprawdź, które produkty z twojej listy kupic znajdują się w asortymencie. Te które są dostępne dodaj do stworzonego pliku zamówienie i zapisz. Te których nie ma to wpisz komunikat np. „Brak: mleko”