英語版
このページの英語版を見る
std.mmfile
メモリマップファイルを読み書きする。
メモリー・マップド・ファイルは、オペレーティング・システムにおいて、仮想メモリーを介してファイル・アクセスを可能にするメカニズムである。
ファイルへのアクセスを可能にするオペレーティング・システムの仕組みである。ファイルをMmFile 、
でファイルを開いた後、標準的なスライス/ポインタ操作で内容を読み書きできる。
メモリへの変更は、その下にあるファイルに自動的に反映される。
メモリ・マッピングは、 や からのバッファード・リード/ライト操作に比べて、大容量ファイルのI/O性能を向上させることができる。
std.file std.stdio しかし、I/Oエラーはそれほど安全には処理されない。
例えば、ファイルがあるディスクが削除された場合などである、
例えば、ファイルがあるディスクが削除された場合、そこから読み出すとセグメ ント・フォールトが発生する可能性がある。
License:
Authors:
Walter Bright,
Matthew Wilson
出典 std/mmfile.d
- class
MmFile
; - MmFileオブジェクトは、メモリー・マップド・ファイル・リソースを制御する。Examples:既存のファイルを読み込む
import std.file; std.file.write(deleteme, "hello"); // deleteemeは一時的なファイル名である scope(exit) remove(deleteme); // この関数の最後にファイルが閉じられるように、スコープ・クラスを使用する scope mmfile = new MmFile(deleteme); writeln(mmfile.length); // "hello".length // スライス演算子を使ってファイルの内容にアクセスする // これは`void[]`として型付けされているので、`char[]`または`ubyte[]`にキャストして使用する const data = cast(const(char)[]) mmfile[]; // この時点では、ファイルの内容はまだ読み込まれていないかもしれない。 // その場合、次のようなメモリーアクセスが // 意図的にページフォールトを引き起こし、カーネルにファイルの内容をロードさせる writeln(data[0 .. 5]); // "hello"
Examples:新しいファイルを書き込むimport std.file; scope(exit) remove(deleteme); scope mmfile = new MmFile(deleteme, MmFile.Mode.readWriteNew, 5, null); writeln(mmfile.length); // 5 auto data = cast(ubyte[]) mmfile[]; // このメモリへの書き込みはファイルの内容に反映される data[] = '\n'; mmfile.flush(); writeln(std.file.read(deleteme)); // "\n\n\n\n\n"
- enum
Mode
: int; - メモリマップファイルを開くモード。
read
- 既存のファイルを読む
readWriteNew
- 既存のファイルを削除し、新しいファイルを書き込む
readWrite
- 既存のファイルを読み書きし、存在しない場合は作成する。
readCopyOnWrite
- 既存のファイルを読み書きする。
- scope this(string
filename
); - メモリ・マップド・ファイル filename を読み込み用にオープンする。 オブジェクト・インスタンスが削除されると、ファイルはクローズされる。Throws:
- POSIXの場合、 std.exception.ErrnoException.
- Windowsでは、 std.windows.syserror.WindowsException.
- scope this(string
filename
, Modemode
, ulongsize
, void*address
, size_twindow
= 0); - モードでメモリー・マップド・ファイル filename を開く。 オブジェクト・インスタンスが削除されるとファイルはクローズされる。Parameters:
string filename
ファイル名。 NULLの場合、匿名ファイル・マッピングが作成される。 Mode mode
上記で定義したアクセス・モード。 ulong size
ファイルのサイズ。0なら、既存のファイルの 既存のファイルのサイズとみなされる。 void* address
ファイルをマッピングする優先アドレス、 ただし、システムはこれを指定する必要はない。 NULLの場合、システムは最も便利なアドレスを選択する。 size_t window
一度にマップするデータ量のブロックサイズを指定する。 で、0はファイル全体をマップすることを意味する。ウィンドウ・サイズは ウィンドウ・サイズは、メモリ割り当てページ・サイズの倍数でなければならない。 Throws:- POSIXの場合、 std.exception.ErrnoException.
- Windowsでは、 std.windows.syserror.WindowsException.
- const @property ulong
length
(); - メモリマップされたファイルのサイズをバイト数で示す。
- alias
opDollar
= length; - length に転送する。
- Mode
mode
(); - ファイルモードを返す読み取り専用プロパティ。
- void[]
opSlice
(); - ファイルの内容全体を配列として返す。
- void[]
opSlice
(ulongi1
, ulongi2
); - ファイル内容のスライスを配列として返す。
- ubyte
opIndex
(ulongi
); - ファイルのインデックスiのバイトを返す。
- ubyte
opIndexAssign
(ubytevalue
, ulongi
); - ファイルのインデックスiのバイトを値に設定して返す。
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku