X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/4bc81323e51ac138e733c14eeb6f283ae706e904..b30c4e8f1aef96f6fdc93da9f125545f5f74d06e:/fatfs/doc/ja/open.html diff --git a/fatfs/doc/ja/open.html b/fatfs/doc/ja/open.html index a4c4a18..9fb7642 100644 --- a/fatfs/doc/ja/open.html +++ b/fatfs/doc/ja/open.html @@ -1,7 +1,7 @@ - + @@ -13,33 +13,34 @@

f_open

-

ƒtƒ@ƒCƒ‹‚ðƒI[ƒvƒ“‚Ü‚½‚͍쐬‚µ‚Ü‚·B

+

ファイルをオープンまたは作成します。

 FRESULT f_open (
-  FIL* fp,           /* [OUT] ‹ó‚̃tƒ@ƒCƒ‹EƒIƒuƒWƒFƒNƒg\‘¢‘̂ւ̃|ƒCƒ“ƒ^ */
-  const TCHAR* path, /* [IN] ƒtƒ@ƒCƒ‹–¼‚ւ̃|ƒCƒ“ƒ^ */
-  BYTE mode          /* [IN] ƒ‚[ƒhƒtƒ‰ƒO */
+  FIL* fp,           /* [OUT] 空のファイル オブジェクト構造体へのポインタ */
+  const TCHAR* path, /* [IN] ファイル名へのポインタ */
+  BYTE mode          /* [IN] モードフラグ */
 );
 
-

ˆø”

+

引数

fp
-
V‚µ‚­ì¬‚·‚éƒtƒ@ƒCƒ‹EƒIƒuƒWƒFƒNƒg\‘¢‘̂ւ̃|ƒCƒ“ƒ^‚ðŽw’肵‚Ü‚·BˆÈ~A‚»‚̃tƒ@ƒCƒ‹‚ð•Â‚¶‚é‚Ü‚Å‚±‚̃tƒ@ƒCƒ‹EƒIƒuƒWƒFƒNƒg‚ðŽg—p‚µ‚ătƒ@ƒCƒ‹‘€ì‚ð‚µ‚Ü‚·B
+
新しく作成するファイル オブジェクト構造体へのポインタを指定します。以降、そのファイルを閉じるまでこのファイル オブジェクトを使用してファイル操作をします。
path
-
ŠJ‚­ƒtƒ@ƒCƒ‹‚̃tƒ@ƒCƒ‹–¼‚ðŽ¦‚·ƒkƒ‹•¶Žš'\0'I’[‚Ì•¶Žš—ñ‚ւ̃|ƒCƒ“ƒ^‚ðŽw’肵‚Ü‚·B
+
開くファイルのファイル名を示すヌル文字'\0'終端の文字列へのポインタを指定します。
mode
-
ƒtƒ@ƒCƒ‹‚̃AƒNƒZƒX•û–@‚âƒI[ƒvƒ“•û–@‚ðŒˆ‚ß‚éƒtƒ‰ƒO‚Å‚·B‚±‚̃pƒ‰ƒ[ƒ^‚É‚ÍŽŸ‚Ì‘g‚ݍ‡‚킹‚ðŽw’肵‚Ü‚·B
+
ファイルのアクセス方法やオープン方法を決めるフラグです。このパラメータには次の組み合わせを指定します。
- - - - - - - + + + + + + + +
’lˆÓ–¡
FA_READ“ǂݏo‚µƒ‚[ƒh‚ÅŠJ‚«‚Ü‚·B“ǂݏ‘‚«‚·‚éê‡‚ÍFA_WRITE‚Æ‹¤‚ÉŽw’肵‚Ü‚·B
FA_WRITE‘‚«ž‚݃‚[ƒh‚ÅŠJ‚«‚Ü‚·B“ǂݏ‘‚«‚·‚éê‡‚ÍFA_READ‚Æ‹¤‚ÉŽw’肵‚Ü‚·B
FA_OPEN_EXISTINGŠù‘¶‚̃tƒ@ƒCƒ‹‚ðŠJ‚«‚Ü‚·Bƒtƒ@ƒCƒ‹‚ª–³‚¢‚Æ‚«‚̓Gƒ‰[‚É‚È‚è‚Ü‚·B(ƒfƒtƒHƒ‹ƒg)
FA_OPEN_ALWAYSŠù‘¶‚̃tƒ@ƒCƒ‹‚ðŠJ‚«‚Ü‚·Bƒtƒ@ƒCƒ‹‚ª–³‚¢‚Æ‚«‚̓tƒ@ƒCƒ‹‚ðì¬‚µ‚Ü‚·B’Ç‹L‚̏ꍇ‚́A‚±‚Ì•û–@‚ŃI[ƒvƒ“‚µ‚½ŒãAf_lseek()‚Ńtƒ@ƒCƒ‹‚̍Ōã”ö‚Ɉړ®‚µ‚Ä‚­‚¾‚³‚¢B
FA_CREATE_NEWƒtƒ@ƒCƒ‹‚ðì¬‚µ‚Ü‚·B“¯–¼‚̃tƒ@ƒCƒ‹‚ª‚ ‚éê‡‚́AFR_EXIST‚ÅŽ¸”s‚µ‚Ü‚·B
FA_CREATE_ALWAYSƒtƒ@ƒCƒ‹‚ðì¬‚µ‚Ü‚·B“¯–¼‚̃tƒ@ƒCƒ‹‚ª‚ ‚éê‡‚́AƒTƒCƒY‚ð0‚É‚µ‚Ä‚©‚çŠJ‚«‚Ü‚·B
値意味
FA_READ読み出しモードで開きます。読み書きする場合はFA_WRITEと共に指定します。
FA_WRITE書き込みモードで開きます。読み書きする場合はFA_READと共に指定します。
FA_OPEN_EXISTING既存のファイルを開きます。ファイルが無いときはエラーになります。(デフォルト)
FA_CREATE_NEWファイルを作成します。同名のファイルがある場合は、FR_EXISTで失敗します。
FA_CREATE_ALWAYSファイルを作成します。同名のファイルがある場合は、サイズを0にしてから開きます。
FA_OPEN_ALWAYS既存のファイルを開きます。ファイルが無いときはファイルを作成します。
FA_OPEN_APPENDFA_OPEN_ALWAYSと同じですが、リード/ライト ポインタはファイルの最後尾にセットされます。
@@ -47,7 +48,7 @@ FRESULT f_open (
-

–ß‚è’l

+

戻り値

FR_OK, FR_DISK_ERR, @@ -72,86 +73,86 @@ FRESULT f_open (

-

‰ðà

-

Šù‘¶‚̃tƒ@ƒCƒ‹‚ðŠJ‚¢‚½‚èAV‚µ‚¢ƒtƒ@ƒCƒ‹‚ðì¬‚µ‚Ü‚·BŠÖ”‚ª¬Œ÷‚·‚é‚ƃtƒ@ƒCƒ‹EƒIƒuƒWƒFƒNƒg‚ªì¬‚³‚êAˆÈ~‚»‚̃tƒ@ƒCƒ‹‚ɑ΂·‚éƒAƒNƒZƒX‚ÉŽg—p‚µ‚Ü‚·Bƒtƒ@ƒCƒ‹‚ð•Â‚¶‚é‚Æ‚«‚́Af_close()‚ðŽg—p‚µ‚Ü‚·B‰½‚ç‚©‚̕ύX‚ªs‚í‚ꂽƒtƒ@ƒCƒ‹‚ª‚»‚̌㐳‚µ‚­•Â‚¶‚ç‚ê‚È‚©‚Á‚½ê‡A‚»‚̃tƒ@ƒCƒ‹‚ª”j‘¹‚·‚éê‡‚ª‚ ‚è‚Ü‚·B

-

Šù‚ÉŠJ‚©‚ê‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ðŠJ‚­•K—v‚ª‚ ‚éê‡‚́A‘½dƒAƒNƒZƒX§Œä‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B‚µ‚©‚µAˆê‚‚̃tƒ@ƒCƒ‹‚ɑ΂·‚鏑‚«ž‚݃‚[ƒh‚ðŠÜ‚ޏd•¡ƒI[ƒvƒ“‚͏í‚É‹ÖŽ~‚Å‚·B

-

ƒtƒ@ƒCƒ‹EƒAƒNƒZƒX‚ðŠJŽn‚·‚é‘O‚ɁAf_mount()‚ðŽg‚Á‚Ä‚»‚ꂼ‚ê‚̘_—ƒhƒ‰ƒCƒu‚Ƀ[ƒNEƒGƒŠƒA(ƒtƒ@ƒCƒ‹EƒVƒXƒeƒ€EƒIƒuƒWƒFƒNƒg)‚ð—^‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B‚±‚̏‰Šú‰»‚ÌŒãA‚»‚̘_—ƒhƒ‰ƒCƒu‚ɑ΂µ‚Ä‘S‚Ẵtƒ@ƒCƒ‹ŠÖ”‚ªŽg‚¦‚é‚悤‚É‚È‚è‚Ü‚·B

+

解説

+

既存のファイルを開いたり、新しいファイルを作成します。関数が成功するとファイル オブジェクトが作成され、以降そのファイルに対するアクセスに使用します。ファイルを閉じるときは、f_close関数を使用します。何らかの変更が行われたファイルがその後正しく閉じられなかった場合、そのファイルが破損する場合があります。

+

既に開かれているファイルを開く必要がある場合は、多重アクセス制御を参照してください。しかし、一つのファイルに対する書き込みモードを含む重複オープンは常に禁止です。

+

ファイル アクセスを開始する前に、f_mount関数を使ってそれぞれの論理ドライブにワーク エリア(ファイル システム オブジェクト)を与える必要があります。この初期化の後、その論理ドライブに対して全てのファイル関数が使えるようになります。f_mkfs関数とf_fdsk関数は、ワークエリア無しでも使えます。

-

‘Ήžî•ñ

-

‘S‚Ă̍\¬‚ÅŽg—p‰Â”\‚Å‚·B_FS_READONLY == 1‚Ì‚Æ‚«‚́AFA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYS‚ÌŠeƒtƒ‰ƒO‚̓Tƒ|[ƒg‚³‚ê‚Ü‚¹‚ñB

+

対応情報

+

全ての構成で使用可能です。_FS_READONLY == 1のときは、FA_READとFA_OPEN_EXISTING以外の各フラグはサポートされません。

-

Žg—p—á

+

使用例

-/* ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ð“ǂݏo‚µ‚Ä•\Ž¦ */
+/* テキストファイルを読み出して表示 */
 
-FATFS FatFs;   /* ˜_—ƒhƒ‰ƒCƒu‚̃[ƒNEƒGƒŠƒA(ƒtƒ@ƒCƒ‹EƒVƒXƒeƒ€EƒIƒuƒWƒFƒNƒg) */
+FATFS FatFs;   /* 論理ドライブのワーク エリア(ファイル システム オブジェクト) */
 
 int main (void)
 {
-    FIL fil;       /* ƒtƒ@ƒCƒ‹EƒIƒuƒWƒFƒNƒg */
-    char line[82]; /* sƒoƒbƒtƒ@ */
-    FRESULT fr;    /* –ß‚è’l */
+    FIL fil;       /* ファイル オブジェクト */
+    char line[82]; /* 行バッファ */
+    FRESULT fr;    /* 戻り値 */
 
 
-    /* ƒfƒtƒHƒ‹ƒgEƒhƒ‰ƒCƒu‚Ƀ[ƒNƒGƒŠƒA‚ð—^‚¦‚é */
+    /* デフォルト ドライブにワークエリアを与える */
     f_mount(&FatFs, "", 0);
 
-    /* ƒeƒLƒXƒgEƒtƒ@ƒCƒ‹‚ðŠJ‚­ */
+    /* テキスト ファイルを開く */
     fr = f_open(&fil, "message.txt", FA_READ);
     if (fr) return (int)fr;
 
-    /* 1s‚¸‚“ǂݏo‚µ‚Ä•\Ž¦ */
+    /* 1行ずつ読み出して表示 */
     while (f_gets(line, sizeof line, &fil))
         printf(line);
 
-    /* ƒtƒ@ƒCƒ‹‚ð•Â‚¶‚é */
+    /* ファイルを閉じる */
     f_close(&fil);
 
     return 0;
 }
 
-/* ƒhƒ‰ƒCƒu1‚̃tƒ@ƒCƒ‹ "file.bin" ‚ðƒhƒ‰ƒCƒu0‚ÖƒRƒs[ */
+/* ドライブ1のファイル "file.bin" をドライブ0へコピー */
 
 int main (void)
 {
-    FATFS fs[2];         /* ˜_—ƒhƒ‰ƒCƒu‚̃[ƒNƒGƒŠƒA(ƒtƒ@ƒCƒ‹EƒVƒXƒeƒ€EƒIƒuƒWƒFƒNƒg) */
-    FIL fsrc, fdst;      /* ƒtƒ@ƒCƒ‹EƒIƒuƒWƒFƒNƒg */
+    FATFS fs[2];         /* 論理ドライブのワークエリア(ファイル システム オブジェクト) */
+    FIL fsrc, fdst;      /* ファイル オブジェクト */
     BYTE buffer[4096];   /* File copy buffer */
     FRESULT fr;          /* FatFs function common result code */
     UINT br, bw;         /* File R/W count */
 
-    /* ƒhƒ‰ƒCƒu0,1‚Ƀ[ƒNEƒGƒŠƒA‚ð—^‚¦‚é */
+    /* ドライブ0,1にワーク エリアを与える */
     f_mount(&fs[0], "0:", 0);
     f_mount(&fs[1], "1:", 0);
 
-    /* ƒhƒ‰ƒCƒu1‚̃Rƒs[Œ³ƒtƒ@ƒCƒ‹‚ðŠJ‚­ */
+    /* ドライブ1のコピー元ファイルを開く */
     res = f_open(&fsrc, "1:file.dat", FA_OPEN_EXISTING | FA_READ);
     if (fr) return (int)fr;
 
-    /* ƒhƒ‰ƒCƒu0‚ɃRƒs[æƒtƒ@ƒCƒ‹‚ðì¬‚·‚é */
+    /* ドライブ0にコピー先ファイルを作成する */
     res = f_open(&fdst, "0:file.dat", FA_CREATE_ALWAYS | FA_WRITE);
     if (fr) return (int)fr;
 
-    /* ƒRƒs[Œ³‚©‚çƒRƒs[æ‚Ƀf[ƒ^“]‘—‚·‚é */
+    /* コピー元からコピー先にデータ転送する */
     for (;;) {
-        res = f_read(&fsrc, buffer, sizeof buffer, &br); /* ƒRƒs[Œ³‚©‚ç‚©‚ç“ǂݏo‚· */
-        if (res || br == 0) break;   /* ƒGƒ‰[‚©ƒtƒ@ƒCƒ‹I’[ */
-        res = f_write(&fdst, buffer, br, &bw);           /* ‚»‚ê‚ðƒRƒs[æ‚ɏ‘‚«ž‚Þ */
-        if (res || bw < br) break;   /* ƒGƒ‰[‚©ƒfƒBƒXƒN–ž”t */
+        res = f_read(&fsrc, buffer, sizeof buffer, &br); /* コピー元からから読み出す */
+        if (res || br == 0) break;   /* エラーかファイル終端 */
+        res = f_write(&fdst, buffer, br, &bw);           /* それをコピー先に書き込む */
+        if (res || bw < br) break;   /* エラーかディスク満杯 */
     }
 
-    /* ‘S‚Ẵtƒ@ƒCƒ‹‚ð•Â‚¶‚é */
+    /* 全てのファイルを閉じる */
     f_close(&fsrc);
     f_close(&fdst);
 
-    /* ƒ[ƒNEƒGƒŠƒA‚ðŠJ•ú‚·‚é */
+    /* ワーク エリアを開放する */
     f_mount(NULL, "0:", 0);
     f_mount(NULL, "1:", 0);
 
@@ -162,10 +163,10 @@ int main (void)
 
 
 
-

ŽQÆ

+

参照

f_read, f_write, f_close, FIL, FATFS

-

–ß‚é

+

戻る