open.html 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html lang="ja">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
  5. <meta http-equiv="Content-Style-Type" content="text/css">
  6. <link rel="up" title="FatFs" href="../00index_j.html">
  7. <link rel="alternate" hreflang="en" title="English" href="../en/open.html">
  8. <link rel="stylesheet" href="../css_j.css" type="text/css" media="screen" title="ELM Default">
  9. <title>FatFs - f_open</title>
  10. </head>
  11. <body>
  12. <div class="para func">
  13. <h2>f_open</h2>
  14. <p>ファイルをオープンまたは作成します。</p>
  15. <pre>
  16. FRESULT f_open (
  17. FIL* <em>FileObject</em>, <span class="c">/* 空のファイル・オブジェクト構造体へのポインタ */</span>
  18. const TCHAR* <em>FileName</em>, <span class="c">/* ファイルのフルパス名へのポインタ */</span>
  19. BYTE <em>ModeFlags</em> <span class="c">/* モードフラグ */</span>
  20. );
  21. </pre>
  22. </div>
  23. <div class="para arg">
  24. <h4>引数</h4>
  25. <dl class="par">
  26. <dt>FileObject</dt>
  27. <dd>新しく作成するファイル・オブジェクト構造体へのポインタを指定します。以降、そのファイルを閉じるまでこのファイル・オブジェクトを使用してファイル操作をします。</dd>
  28. <dt>FileName</dt>
  29. <dd>開く(または作成する)ファイルの <a href="filename.html">ファイル名</a>が入った<tt>'\0'</tt>で終わる文字列へのポインタを指定します。</dd>
  30. <dt>ModeFlags</dt>
  31. <dd>ファイルのアクセス方法やオープン方法を決めるフラグです。このパラメータには次の組み合わせを指定します。<br>
  32. <table class="lst">
  33. <tr><th>値</th><th>意味</th></tr>
  34. <tr><td>FA_READ</td><td>読み出しモードで開きます。読み書きする場合は<tt>FA_WRITE</tt>と共に指定します。</td></tr>
  35. <tr><td>FA_WRITE</td><td>書き込みモードで開きます。読み書きする場合は<tt>FA_READ</tt>と共に指定します。</td></tr>
  36. <tr><td>FA_OPEN_EXISTING</td><td>既存のファイルを開きます。ファイルが無いときはエラーになります。(デフォルト)</td></tr>
  37. <tr><td>FA_OPEN_ALWAYS</td><td>既存のファイルを開きます。ファイルが無いときはファイルを作成します。追記の場合は、この方法でオープンした後、<a href="lseek.html">f_lseek()</a>でファイルの最後尾に移動してください。</td></tr>
  38. <tr><td>FA_CREATE_NEW</td><td>ファイルを作成します。同名のファイルがある場合は、<tt>FR_EXIST</tt>で失敗します。</td></tr>
  39. <tr><td>FA_CREATE_ALWAYS</td><td>ファイルを作成します。同名のファイルがある場合は、サイズを0にしてから開きます。</td></tr>
  40. </table>
  41. </dd>
  42. </dl>
  43. </div>
  44. <div class="para ret">
  45. <h4>戻り値</h4>
  46. <p>
  47. <a href="rc.html#ok">FR_OK</a>,
  48. <a href="rc.html#de">FR_DISK_ERR</a>,
  49. <a href="rc.html#ie">FR_INT_ERR</a>,
  50. <a href="rc.html#nr">FR_NOT_READY</a>,
  51. <a href="rc.html#ok">FR_NO_FILE</a>,
  52. <a href="rc.html#np">FR_NO_PATH</a>,
  53. <a href="rc.html#in">FR_INVALID_NAME</a>,
  54. <a href="rc.html#de">FR_DENIED</a>,
  55. <a href="rc.html#ex">FR_EXIST</a>,
  56. <a href="rc.html#wp">FR_WRITE_PROTECTED</a>,
  57. <a href="rc.html#id">FR_INVALID_DRIVE</a>,
  58. <a href="rc.html#ne">FR_NOT_ENABLED</a>,
  59. <a href="rc.html#ns">FR_NO_FILESYSTEM</a>,
  60. <a href="rc.html#tm">FR_TIMEOUT</a>,
  61. <a href="rc.html#lo">FR_LOCKED</a>,
  62. <a href="rc.html#nc">FR_NOT_ENOUGH_CORE</a>,
  63. <a href="rc.html#tf">FR_TOO_MANY_OPEN_FILES</a>
  64. </p>
  65. </div>
  66. <div class="para desc">
  67. <h4>解説</h4>
  68. <p>既存のファイルを開いたり、新しいファイルを作成します。関数が成功するとファイル・オブジェクトが作成され、以降そのファイルに対するアクセスに使用します。ファイルを閉じるときは、<a href="close.html">f_close()</a>を使用します。何らかの変更が行われたファイルがその後正しく閉じられなかった場合、そのファイルが破損する場合があります。</p>
  69. <p>もしも既に開かれているファイルを開く必要がある場合は、<a href="appnote.html#dup">多重アクセス制御</a>を参照してください。</p>
  70. <p>ファイル・アクセスを開始する前に、<a href="mount.html">f_mount()</a>を使ってそれぞれの論理ドライブにワーク・エリア(ファイル・システム・オブジェクト)を与える必要があります。この初期化の後、その論理ドライブに対して全てのファイル関数が使えるようになります。</p>
  71. </div>
  72. <div class="para comp">
  73. <h4>対応情報</h4>
  74. <p>全ての構成で使用可能です。<tt>_FS_READONLY == 1</tt>のときは、<tt>FA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYS</tt>の各フラグはサポートされません。</p>
  75. </div>
  76. <div class="para use">
  77. <h4>使用例(ファイル・コピー)</h4>
  78. <pre>
  79. void main (void)
  80. {
  81. FATFS fs[2]; <span class="c">/* 論理ドライブのワーク・エリア(ファイル・システム・オブジェクト) */</span>
  82. FIL fsrc, fdst; <span class="c">/* ファイル・オブジェクト */</span>
  83. BYTE buffer[4096]; <span class="c">/* file copy buffer */</span>
  84. FRESULT res; <span class="c">/* FatFs function common result code */</span>
  85. UINT br, bw; <span class="c">/* File R/W count */</span>
  86. <span class="c">/* ドライブ0,1にワーク・エリアを与える (常に成功する) */</span>
  87. f_mount(0, &amp;fs[0]);
  88. f_mount(1, &amp;fs[1]);
  89. <span class="c">/* ドライブ1のソース・ファイルを開く */</span>
  90. res = f_open(&amp;fsrc, "1:srcfile.dat", FA_OPEN_EXISTING | FA_READ);
  91. if (res) die(res);
  92. <span class="c">/* ドライブ0にデスティネーション・ファイルを作成する */</span>
  93. res = f_open(&amp;fdst, "0:dstfile.dat", FA_CREATE_ALWAYS | FA_WRITE);
  94. if (res) die(res);
  95. <span class="c">/* ソースからデスティネーションにコピーする */</span>
  96. for (;;) {
  97. res = f_read(&amp;fsrc, buffer, sizeof(buffer), &amp;br);
  98. if (res || br == 0) break; <span class="c">/* エラーかファイル終端 */</span>
  99. res = f_write(&amp;fdst, buffer, br, &amp;bw);
  100. if (res || bw &lt; br) break; <span class="c">/* エラーかディスク満杯 */</span>
  101. }
  102. <span class="c">/* 全てのファイルを閉じる */</span>
  103. f_close(&amp;fsrc);
  104. f_close(&amp;fdst);
  105. <span class="c">/* ワーク・エリアを開放する */</span>
  106. f_mount(0, NULL);
  107. f_mount(1, NULL);
  108. }
  109. </pre>
  110. </div>
  111. <div class="para ref">
  112. <h4>参照</h4>
  113. <p><tt><a href="read.html">f_read</a>, <a href="write.html">f_write</a>, <a href="close.html">f_close</a>, <a href="sfile.html">FIL</a>, <a href="sfatfs.html">FATFS</a></tt></p>
  114. </div>
  115. <p class="foot"><a href="../00index_j.html">戻る</a></p>
  116. </body>
  117. </html>