<html> <style type=„text/css”> p { text-align: left;} .reveal pre code {
height: 100%; max-height: 100%; box-sizing: border-box; }
</style> </html>
C:\Users\Marek\Pulpit\plik.txtplik.txt ..\Pulpit\plik.jpgSystem.IO Close(), brak zamknięcia strumienia może spowodować utratę danych lub uszkodzenie plikuStreamWriter - zapis plików tekstowych StreamReader - odczyt plików tekstowychBinaryWriter - zapis danych binarnych BinaryReader - odczyt danych binarnychOtworzenie strumienia do odczytu pliku tekstowego
var reader = new StreamReader("C:\\Users\\Marek\\Pulpit\\plik.txt")
| Metoda | Opis |
|---|---|
| ReadLine | odczyt linii tekstu |
| Read | odczyt pojedynczego znaku |
| ReadToEnd | odczyt całego pliku |
| Peek | podejrzyj kolejny znak |
| Close | zamknięcie strumienia |
| Własność | Opis |
|---|---|
| EndOfStream | True, gdy koniec strumienia |
// Utworzenie obiektu czytającego z pliku StreamReader reader = new StreamReader("tekst.txt"); // Tu operacje czytania sekwencji danych // Zamknięcie strumienia reader.Close();
Ścieżka bezwzględna rozpoczyna się od numeru nośnika
string nazwa_pliku = "C:\\Temp\\work\\test.txt";
To samo z użyciem @, który wyłącza znaki specjalne w łańcuchu
string nazwa_pliku = @"C:\Temp\work\test.txt";
Uwaga na przenośność: unikaj ścieżek bezwzględnych
Ścieżka względna określana względem katalogu roboczego (bieżącego)
string nazwa_pliku = "test.txt"; string nazwa_pliku2 = "Dokumenty\\tekst.txt"; string nazwa_pliku3 = @"..\..\Dokumenty\tekst.txt";
Katalog roboczy
System.IO.Directory.GetCurrentDirectory();
StreamReader reader = new StreamReader(plik); int i=1; while(!reader.EndOfStream) { string linia = reader.ReadLine() ?? ""; Console.WriteLine("{0} : {1}", i, linia); } reader.Close();
using automatycznie zamyka strumień i zwalnia wszystkie zasoby po zakończeniu obsługi strumienia
using( obiekt_strumienia ) { // operacje na strumieniu }
string plik = "plik.txt"; using(StreamReader reader = new StreamReader(plik)) { int i=1; while(!reader.EndOfStream) { string linia = reader.ReadLine() ?? ""; Console.WriteLine("{0} : {1}", i, linia); } }
using - zawsze używaj aby automatycznie zwalniać zasobyFile.Exists() i inne metody sprawdzające system plikówstring tekst = ""; try { var reader = new StreamReader("plik.txt"); using( reader ) { tekst = sr.ReadToEnd(); } } catch(FileNotFoundException) { Console.WriteLine("Nie znaleziono pliku: {0}", plik); } catch(IOException) { Console.WriteLine("Wystąpił błąd wejścia/wyjścia"); }
Napisz program, który odczyta sekwencje liczb rzeczywistych zapisanych w pliku tekstowym i wyznaczy sumę, wartość średnią wartość minimalną i wartość maksymalną.
Nazwę pliku do odczytu podaje użytkownik na początku działania programu.
Zabezpiecz program przed błędami takimi jak:
Przykładowy plik wejściowy: liczby-pl.txt lub liczby-en.txt
Tworzenie nowego pliku
var writer = new StreamWriter(@"C:\Users\Marek\Pulpit\plik.txt" )
Uwaga: jeśli plik istnieje to aktualna zawartość zostanie skasowana.
Dopisywanie do istniejącego pliku
var writer = new StreamWriter(@"C:\Users\Marek\Pulpit\plik.txt", true )
| Metoda | Opis |
|---|---|
| Write | zapis łańcucha znakowego |
| WriteLine | zapis łańcucha ze znakiem nowej linii |
| Close | zamknięcie strumienia |
using(var sw = new StreamWriter("plik.txt")) { sw.WriteLine("Witaj świecie"); sw.WriteLine("Liczba PI wynosi {0,10:F5}", Math.PI); }
Napisz program, który zapisze do pliku tekstowego sekwencję K liczb wylosowanych spośród liczb całkowitych od 1 do N. Wartości K, N oraz nazwę pliku podaje użytkownik.
Przydatna klasa System.Random() - generator liczb losowych.
| Metoda | Opis |
|---|---|
Next() | zwraca losową wartość całkowitą dodatnią |
Next(10) | zwraca losowa wartość całkowiąa mniejszą niż 10 |
NextDouble() | zwraca losową wartość rzeczywistą z zakresu [0, 1) |
FileStream | Metoda | Opis |
|---|---|
Copy, Move, Delete | kopiowanie, przenoszenie, usuwanie plików |
CreateText, OpenText | Tworzenie i otwieranie plików tekstowych |
ReadAllLines, ReadAllBytes, ReadAllText | Odczyt zawartości pliku |
WriteAllLines, WriteAllBytes, WriteAllText | Zapis zawartości pliku |
Exists | czy wskazany plik istnieje |
| Metoda | Opis |
|---|---|
CreateDirectory, Move, Delete | tworzenie, przenoszenie, usuwanie folderów |
GetFiles, GetDirectories | zwraca tablicę nazw plików (podkatalogów) wskazanego folderu |
Exists | czy wskazany folder istnieje |
Klasa BinaryReader odczyt wartości w postaci binarnej
| Metoda | Opis |
|---|---|
Read | odczyt sekwencji N bajtów do tablicy |
ReadInt, ReadChar, ReadDouble | Odczyt wartości określonego typu |
Klasa BinaryWriter zapis wartości w postaci binarnej
| Metoda | Opis |
|---|---|
Write | zapis pojedynczej wartości lub sekwencji N bajtów z tablicy |
Napisz program, który odwraca kolejność znaków w poszczególnych liniach pewnego pliku tekstowym. Nazwę pliku podaje użytkownik na początku działania programu. Jeżeli wskazany plik istnieje to po wykonaniu programu zawartość tego pliku zostaje zamieniona w taki sposób, że każda kolejna linia tekstu posiada odwróconą kolejność znaków.
Przykładowo, jeśli plik zawiera tekst
Ala ma kota a Ewa ma psa.
to jego zawartośc zamienia się w
atok am alA .asp am awE a
Jeżeli podany przez użytkownika plik nie istnieje lub operacje na plikach nie powiodły się to program wypisuje stosowany komunikat błędu i kończy swoje działanie.
Adres do zadania w Moodle: https://moodle.umk.pl/mod/assign/view.php?id=126250