Programação D - Arquivo E / S

Os arquivos são representados pela estrutura File do módulo std.stdio. Um arquivo representa uma sequência de bytes, não importa se é um arquivo de texto ou binário.

A linguagem de programação D fornece acesso a funções de alto nível, bem como chamadas de baixo nível (nível do sistema operacional) para manipular arquivos em seus dispositivos de armazenamento.

Abrindo arquivos em D

Os fluxos de entrada e saída padrão stdin e stdout já estão abertos quando os programas começam a ser executados. Eles estão prontos para serem usados. Por outro lado, os arquivos devem primeiro ser abertos especificando o nome do arquivo e os direitos de acesso necessários.

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

Aqui, filename é uma string literal, que você usa para nomear o arquivo e acessar mode pode ter um dos seguintes valores -

Sr. Não. Modo e descrição
1

r

Abre um arquivo de texto existente para fins de leitura.

2

w

Abre um arquivo de texto para escrita; se não existir, um novo arquivo será criado. Aqui, o seu programa começará a escrever o conteúdo desde o início do arquivo.

3

a

Abre um arquivo de texto para gravação em modo de acréscimo; se ele não existir, um novo arquivo será criado. Aqui, seu programa começará a anexar conteúdo ao conteúdo do arquivo existente.

4

r+

Abre um arquivo de texto para leitura e escrita.

5

w+

Abre um arquivo de texto para leitura e escrita. Ele primeiro trunca o arquivo para comprimento zero se ele existir, caso contrário, crie o arquivo se ele não existir.

6

a+

Abre um arquivo de texto para leitura e escrita. Ele cria o arquivo se ele não existir. A leitura começará do início, mas a escrita só pode ser anexada.

Fechando um arquivo em D

Para fechar um arquivo, use a função file.close () onde arquivo contém a referência do arquivo. O protótipo desta função é -

file.close();

Qualquer arquivo que tenha sido aberto por um programa deve ser fechado quando o programa terminar de usar esse arquivo. Na maioria dos casos, os arquivos não precisam ser fechados explicitamente; eles são fechados automaticamente quando os objetos File são encerrados.

Escrevendo um arquivo em D

file.writeln é usado para gravar em um arquivo aberto.

file.writeln("hello");

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

Quando o código acima é compilado e executado, ele cria um novo arquivo test.txt no diretório em que foi iniciado (no diretório de trabalho do programa).

Lendo um arquivo em D

O método a seguir lê uma única linha de um arquivo -

string s = file.readln();

Um exemplo completo de leitura e gravação é mostrado abaixo.

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(); 
}

Quando o código acima é compilado e executado, ele lê o arquivo criado na seção anterior e produz o seguinte resultado -

hello

Aqui está outro exemplo para ler o arquivo até o final do arquivo.

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); 
   }
}

Quando o código acima é compilado e executado, ele lê o arquivo criado na seção anterior e produz o seguinte resultado -

line -hello 
line -world 
line -

Você pode ver no exemplo acima uma terceira linha vazia, pois writeln a leva para a próxima linha assim que for executada.