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.