Programowanie D - We / Wy pliku

Pliki są reprezentowane przez pliku struktury modułu std.stdio. Plik reprezentuje sekwencję bajtów, nie ma znaczenia, czy jest to plik tekstowy, czy plik binarny.

Język programowania D zapewnia dostęp do funkcji wysokiego poziomu, a także wywołań niskiego poziomu (poziom systemu operacyjnego) do obsługi plików na urządzeniach magazynujących.

Otwieranie plików w D

Standardowe strumienie wejściowe i wyjściowe stdin i stdout są już otwarte, gdy programy są uruchamiane. Są gotowe do użycia. Z drugiej strony, pliki należy najpierw otworzyć, określając nazwę pliku i wymagane prawa dostępu.

File file = File(filepath, "mode");

Tutaj, filename to literał łańcuchowy, którego używasz do nazwania pliku i uzyskania dostępu mode może mieć jedną z następujących wartości -

Sr.No. Tryb i opis
1

r

Otwiera istniejący plik tekstowy do odczytu.

2

w

Otwiera plik tekstowy do zapisu, jeśli nie istnieje, tworzony jest nowy plik. Tutaj twój program zacznie zapisywać zawartość od początku pliku.

3

a

Otwiera plik tekstowy do zapisu w trybie dołączania, jeśli nie istnieje, tworzony jest nowy plik. Tutaj Twój program rozpocznie dołączanie zawartości do istniejącej zawartości pliku.

4

r+

Otwiera plik tekstowy do odczytu i zapisu obu.

5

w+

Otwiera plik tekstowy do odczytu i zapisu obu. Najpierw skraca plik do zerowej długości, jeśli istnieje, w przeciwnym razie tworzy plik, jeśli nie istnieje.

6

a+

Otwiera plik tekstowy do odczytu i zapisu obu. Tworzy plik, jeśli nie istnieje. Czytanie rozpocznie się od początku, ale tekst można tylko dołączyć.

Zamknięcie pliku w D

Aby zamknąć plik, użyj funkcji file.close (), gdzie plik przechowuje odniesienie do pliku. Prototypem tej funkcji jest -

file.close();

Każdy plik, który został otwarty przez program, musi zostać zamknięty, gdy program zakończy korzystanie z tego pliku. W większości przypadków pliki nie muszą być jawnie zamykane; są zamykane automatycznie po zakończeniu obiektów File.

Pisanie pliku w D

file.writeln służy do zapisu w otwartym pliku.

file.writeln("hello");

import std.stdio; 
import std.file;
  
void main() { 
   File file = File("test.txt", "w"); 
   file.writeln("hello");
   file.close(); 
}

Kiedy powyższy kod jest kompilowany i wykonywany, tworzy nowy plik test.txt w katalogu, w którym został uruchomiony (w katalogu roboczym programu).

Czytanie pliku w D

Poniższa metoda odczytuje pojedynczy wiersz z pliku -

string s = file.readln();

Pełny przykład odczytu i zapisu przedstawiono poniżej.

import std.stdio; 
import std.file; 
 
void main() { 
   File file = File("test.txt", "w");
   file.writeln("hello");  
   file.close(); 
   file = File("test.txt", "r"); 
   
   string s = file.readln(); 
   writeln(s);
   
   file.close(); 
}

Kiedy powyższy kod jest kompilowany i wykonywany, odczytuje plik utworzony w poprzedniej sekcji i generuje następujący wynik -

hello

Oto kolejny przykład odczytu pliku do końca pliku.

import std.stdio;
import std.string;

void main() { 
   File file = File("test.txt", "w");  
   file.writeln("hello"); 
   file.writeln("world");  
   file.close();  
   file = File("test.txt", "r"); 
    
   while (!file.eof()) { 
      string line = chomp(file.readln()); 
      writeln("line -", line); 
   }
}

Kiedy powyższy kod jest kompilowany i wykonywany, odczytuje plik utworzony w poprzedniej sekcji i generuje następujący wynik -

line -hello 
line -world 
line -

Możesz zobaczyć w powyższym przykładzie pustą trzecią linię, ponieważ writeln przenosi ją do następnej linii po wykonaniu.