Operacje na plikach
Umiesz już posługiwać się wszystkimi podstawowymi mechanizmami Ruby’iego, jak i programowania w ogóle. Na koniec tego samouczka przygotowaliśmy coś co przyda Ci się przy rozwiązywaniu zadań z naszego serwisu, jak i w codziennej pracy przy komputerze. Poniższy rozdział traktuje o operacjach na plikach tekstowych.
Czytanie i tworzenie do plików
Ruby posiada metodę File.open(NAZWA_PLIKU, TRYB), która w zależności od wybranego trybu otwiera/tworzy plik pozwalając na odczyt/zapis danych:
Tryb | Opis |
---|---|
r | Tylko do odczytu. |
r+ | Odczyt-zapis. |
w | Tylko zapis. Jeśli plik o danej nazwie istnieje, zostanie podmieniony. Jeśli nie istnieje, zostanie stworzony. |
w+ | Odczyt-zapis. Jeśli plik o danej nazwie istnieje, zostanie podmieniony. Jeśli nie istnieje, zostanie stworzony. |
a | Tylko zapis. Jeśli plik o danej nazwie istnieje, dane zostaną dopisane na jego końcu. Jeśli nie istnieje, zostanie stworzony. |
a+ | Odczyt-zapis. Jeśli plik o danej nazwie istnieje, dane zostaną dopisane na jego końcu. Jeśli nie istnieje, zostanie stworzony. |
Uwaga! Po otwarciu pliku metodą open, zawsze należy go zamknąć. W przeciwnym wypadku plik może ulec uszkodzeniu. Służy do tego metoda close. Poniżej przykładowy program, który tworzy plik, zapisuje w nim dwa zdania za pomocą metody puts i zamyka go:
#File: Write_file.rb file = File.open "New_file.txt", "w" file.puts("I need to read something about OOP") file.puts("I need to read something about RoR") file.close
Oprócz metody puts, która dodaje na końcu napisu znak nowej linii istnieje również metoda print, która tego nie robi. Niewątpliwie widać tu analogię to metod wypisujących napis na ekran. Zauważ, jednak, że składnia jest inna.
Wczytajmy teraz nasz plik i wyświetlmy kolejno wszystkie jego linie za pomocą pętli for (w Rubym możemy iterować po liniach pliku ;)):
#File: Read_file.rb file = File.open "New_file.txt", "r" for line in file puts line end file.close
jan@Stacja-Linux ~/Pulpit $ ruby Read_file.rb I need to read something about OOP I need to read something about RoR