Obsługa plików w języku D

Ostatnio trochę z musu niestety (sam pewnie bym się za to nie zabrał :P) zacząłem programować w języku D. Dlaczego z musu(?), a no dlatego, że jest to przedmiot na studiach, który muszę zaliczyć ;)

Jeden z programów, który muszę napisać ma za zadanie obsługę plików, jako że nie znalazłem w sieci (słaby w googlowaniu jestem ;)) nic po polsku o plikach w języku D, to postanowiłem takie coś skrobnąć, może się komuś przyda, na początek kodzik:

import std.stdio;
import std.stream;

void main() {
	File plik = new File();
	plik.open("plik.txt", FileMode.OutNew); //"nowy" plik
	plik.writeLine("linia tekstu");
	plik.close();

	plik.open("plik.txt", FileMode.In); //plik do czytania
	while(!plik.eof()) {
		writefln("%s", plik.readLine());
	}
	plik.close();

	plik.open("plik.txt", FileMode.Append); //dopisywanie do pliku
	plik.writef("kolejna linia tekstu");
	plik.close();

	writefln();

	plik.open("plik.txt", FileMode.In); //plik do czytania
	while(!plik.eof()) {
		writefln("%s", plik.readLine());
	}
	plik.close();
}

a teraz parę słów o nim :)

Pierwsze linijki to standardowo import potrzebnych paczek, następnie tworzymy nowy obiekcik typu File, w moim przypadku „pusty” obiekcik, ale można też wykonać to w taki sposób:

File plik = new File("plik.txt", FileMode.OutNew);

6 linia to otwarcie pliku „plik.txt” do pisania w taki sposób, aby to był jakby nowy plik (czyli jeżeli nie ma takiego pliku to jest on tworzony, a jeżeli taki plik istnieje to cała jego zawartość jest kasowana). W 7 linii następuje zapis linii tekstu do pliku (łącznie ze znakiem nowego wiersza), linia 8 to jak się można domyśleć zamknięcie pliku. W linii 10 następuje otwarcie pliku do czytania, linia 11 to pętla, która wykonuje się do momentu napotkania znaku końca pliku, pętla ta wypisuje każda linię na standardowe wyjście (linia 12). W linii 16 następuje otwarcie pliku do pisania w taki sposób, że zachowuje aktualną zawartość pliku i ustawia wskaźnik na jego końcu, czyli dopisywanie do pliku.

To była obsługa plików w Phobosie, a teraz kodzik robiący to samo, ale za pomocą biblioteki Tango

import tango.io.device.File;
import tango.io.Stdout;

void main() {
	File.set("plik.txt", "linia tekstu\r\n");
	
	char[] tekst = cast(char[])File.get("plik.txt");
	Stdout(tekst);
	
	File.append("plik.txt", "kolejna linia tekstu");
	
	Stdout.newline();
	
	tekst = cast(char[])File.get("plik.txt");
	Stdout(tekst);
}

Na początku standardowo czyli import potrzebnych paczek, 5 linia to zapis tekstu do pliku, zapis ten nadpisuje aktualną zawartość pliku, linia 7 to pobranie zawartości pliku do zmiennej, linia 10 to natomiast dopisanie nowego tekstu do już istniejącego w pliku.

No i to by było na tyle, mam nadzieję, że się komuś przyda ;)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *