D-programming-file-io

提供:Dev Guides
移動先:案内検索

Dプログラミング-ファイルI/O

ファイルは、std.stdioモジュールの_File_構造体で表されます。 ファイルは一連のバイトを表し、テキストファイルまたはバイナリファイルのどちらでもかまいません。

Dプログラミング言語は、ストレージデバイス上のファイルを処理するための低レベル(OSレベル)呼び出しだけでなく、高レベル関数へのアクセスを提供します。

Dでファイルを開く

標準の入力および出力ストリームstdinおよびstdoutは、プログラムの実行開始時にすでに開いています。 すぐに使用できます。 一方、ファイルの名前と必要なアクセス権を指定して、最初にファイルを開く必要があります。

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

ここで、*ファイル名*は文字列リテラルであり、ファイルに名前を付けてアクセスするために使用し、*モード*は次のいずれかの値を持つことができます-

Sr.No. Mode & Description
1

r

読み取り用に既存のテキストファイルを開きます。

2

w

書き込み用にテキストファイルを開きます。テキストファイルが存在しない場合は、新しいファイルが作成されます。 ここで、プログラムはファイルの先頭からコンテンツの書き込みを開始します。

3

a

追加モードで書き込むためにテキストファイルを開きます。存在しない場合は、新しいファイルが作成されます。 ここで、プログラムは既存のファイルコンテンツにコンテンツを追加し始めます。

4

r+

読み取りと書き込みの両方のためにテキストファイルを開きます。

5

w+

読み取りと書き込みの両方のためにテキストファイルを開きます。 最初にファイルが存在する場合はファイルをゼロ長に切り捨て、存在しない場合はファイルを作成します。

6

a+

読み取りと書き込みの両方のためにテキストファイルを開きます。 ファイルが存在しない場合は作成します。 読み取りは最初から開始されますが、書き込みは追加のみ可能です。

Dでファイルを閉じる

ファイルを閉じるには、fileがファイル参照を保持しているfile.close()関数を使用します。 この関数のプロトタイプは-

file.close();

プログラムによって開かれたファイルは、プログラムがそのファイルの使用を終了したときに閉じる必要があります。 ほとんどの場合、ファイルを明示的に閉じる必要はありません。 Fileオブジェクトが終了すると、自動的に閉じられます。

Dでファイルを書く

file.writelnは、開いているファイルに書き込むために使用されます。

file.writeln("hello");
import std.stdio;
import std.file;

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

上記のコードがコンパイルされて実行されると、新しいファイル test.txt が、それが起動されたディレクトリ(プログラムの作業ディレクトリ内)に作成されます。

Dでのファイルの読み取り

次の方法は、ファイルから単一の行を読み取ります-

string s = file.readln();

読み取りと書き込みの完全な例を以下に示します。

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

上記のコードがコンパイルおよび実行されると、前のセクションで作成されたファイルを読み取り、次の結果を生成します-

hello

ファイルの終わりまでファイルを読み込む別の例を次に示します。

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

上記のコードがコンパイルおよび実行されると、前のセクションで作成されたファイルを読み取り、次の結果を生成します-

line -hello
line -world
line -

上記の例では、writelnが実行されるとwritelnが次の行に移動するため、空の3行目が表示されます。