Difference between revisions of "JA/Documentation/BASIC Guide/Files and Directories (Runtime Library)"

From Apache OpenOffice Wiki
Jump to: navigation, search
Line 8: Line 8:
 
}}
 
}}
 
   
 
   
ファイル操作は、アプリケーションの基\'96\'7b機\'94\'5cの 1 つです。{{ API には、StarSuite ドキュメントの作成、オープン、編集用に必要となる、各種のオブジェクトが用意されています。OOo}}詳細情報については、 「[[JA/Documentation/BASIC Guide/API Intro|{{OOo}} API について」を参照してください。]]また状況によっては、ファイルシステムの直接アクセス、ディレクトリの検索、テキストファイルの編集などを行う必要もあります。{{OOo}} Basic の実行時ライブラリには、このような処理を行うための関数が各種用意されています。
+
ファイル操作は、アプリケーションの基本タスクの 1 つです。{{OOo}} API には、Office ドキュメントの作成、オープン、編集用に必要となる、各種のオブジェクトが用意されています。オブジェクトの詳細情報については、「[[Documentation/BASIC Guide/API Intro|{{OOo}} API ついて]]」を参照してください。また状況によっては、ファイルシステムの直接アクセス、ディレクトリの検索、テキストファイルの編集などを行う必要もあります。{{OOo}} Basic の実行時ライブラリには、このような処理を行うための関数が各種用意されています。
  
{{Documentation/Note|ファイルおよびディレクトリ関係の機\'94\'5cのうち DOS 固有のものは、{{OOo}} でサポートされなくなったか、使用に制限が付くようになりました。たとえば、<tt>ChDir</tt> 関数、<tt>ChDrive</tt> 関数、<tt>CurDir</tt> 関数は現行バージョンでは使用できません。また DOS 固有の属性についても、ファイル属性をパラメータとする関数での使用が行えなくなっています (たとえば、隠しファイルとシステムファイルの区別など)。これらは、{{OOo}} のプラットフォーム独立性を確保するために必要な措置の一環です。}}
+
{{Documentation/Note|ファイルおよびディレクトリ関係の関数のうち DOS 固有のものは、{{OOo}} でサポートされなくなったか、使用に制限が付くようになりました。たとえば、<tt>ChDir</tt> 関数、<tt>ChDrive</tt> 関数、<tt>CurDir</tt> 関数は現行バージョンでは使用できません。また DOS 固有の属性についても、ファイル属性をパラメータとする関数で使用できなくなっています (たとえば、隠しファイルとシステムファイルの区別など)。これらは、{{OOo}} のプラットフォーム独立性を確保するために必要な措置の一環です。}}
  
== ファイル操作 ==
+
== ファイル管理 ==
  
 
=== ディレクトリ内のファイル検索 ===
 
=== ディレクトリ内のファイル検索 ===
  
<tt>Dir</tt> Basic でディレクトリシステム内でのファイルやサブディレクトリの検索を行うには、{{OOo}} 関数を使用します。<tt>Dir 関数を最初に使用する際には、検索するディレクトリのパスを第 1 パラメータとして指定する必要があります。</tt><tt>Dir 関数の第 2 パラメータには、検索するファイルやディレクトリの名前を指定します。</tt>この関数の戻り値としては、最初にヒットしたディレクトリエントリが {{OOo}} Basic により返されます。次の該当エントリを取得するには、パラメータを付けずに再度 <tt>Dir 関数を呼び出します。</tt>該当するエントリが存在しなかった場合、<tt>Dir</tt> 関数は空白文字列を返します。
+
ディレクトリシステム内でファイルやサブディレクトリの検索を行うには、{{OOo}} Basic の <tt>Dir</tt> 関数を使用します。<tt>Dir</tt> 関数を最初に使用する際には、検索するディレクトリのパスを第 1 パラメータとして指定する必要があります。<tt>Dir</tt> 関数の第 2 パラメータには、検索するファイルやディレクトリの名前を指定します。この関数の戻り値としては、最初に見つかったディレクトリエントリの名前が {{OOo}} Basic により返されます。次の該当エントリを取得するには、パラメータを付けずに再度 <tt>Dir</tt> 関数を呼び出します。該当するエントリが存在しなかった場合、<tt>Dir</tt> 関数は空白文字列を返します。
  
以下のサンプルコードでは、<tt>Dir</tt> 関数を使って、指定ディレクトリ内に存在するすべてのファイルを一覧表示します。この手続きでは、個々のファイル名を変数 <tt>AllFiles</tt> に記録してゆき、最後の段階でメッセージ\'83\'7bックスに一括\'95\'5c示させています。
+
次のサンプルコードでは、<tt>Dir</tt> 関数を使って、指定ディレクトリ内に存在するすべてのファイルを一覧表示します。この手続きでは、個々のファイル名を変数 <tt>AllFiles</tt> に記録してゆき、最後の段階でメッセージボックスに一括表示させています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 37: Line 37:
 
</source>
 
</source>
  
<tt>0</tt> 関数の第 2 パラメータに <tt>Dir</tt> (ゼロ) を指定しているのは、ディレクトリを無視してファイル名のみを <tt>Dir</tt> 関数の戻り値に返させるためです。このようなパラメータ値としては、以下のものを指定できます。
+
<tt>Dir</tt> 関数の第 2 パラメータに <tt>0</tt> (ゼロ) を指定しているのは、ディレクトリを無視してファイル名のみを <tt>Dir</tt> 関数に返させるためです。このようなパラメータ値としては、次のものを指定できます。
  
 
* <tt>0</tt>:通常のファイルのみを対象とする。
 
* <tt>0</tt>:通常のファイルのみを対象とする。
 
* <tt>16</tt>:サブディレクトリのみを対象とする。
 
* <tt>16</tt>:サブディレクトリのみを対象とする。
  
以下のサンプルコードでは、基本的に上記のものと同じ処理を行なっていますが、こちらは <tt>Dir</tt> 関数の第 2 パラメータに 16 を指定しているので、ファイルではなくサブディレクトリを対象にしています。
+
次のサンプルコードでは、基本的に上記のものと同じ処理を行なっていますが、こちらは <tt>Dir</tt> 関数の第 2 パラメータに 16 を指定しているので、ファイルではなくサブディレクトリを対象にしています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 61: Line 61:
 
</source>
 
</source>
  
{{Documentation/Note|{{OOo}} Basic の <tt>Dir</tt> 関数にパラメータ値 16 を指定すると、該当ディレクトリ内のサブディレクトリのみが返されます。VBA で同様の処理を行うと、サブディレクトリだけでなく通常のファイルも返されるので、ディレクトリ名のみを取得するには追加の操作が必要です。<tt>CompatibilityMode ( true )</tt> 関数を使用すると、{{OOo}} Basic は VBA と同様に動作します。つまり、Dir 関数のパラメータに 16 を指定すると、サブディレクトリだけでなく通常のファイルも返されます。 }}
+
{{Documentation/Note|{{OOo}} Basic の <tt>Dir</tt> 関数にパラメータ値 16 を指定すると、該当ディレクトリ内のサブディレクトリのみが返されます。VBA で同様の処理を行うと、サブディレクトリだけでなく通常のファイルも返されるので、ディレクトリ名のみを取得するには追加の操作が必要です。<tt>CompatibilityMode ( true )</tt> 関数を使用すると、{{OOo}} Basic は VBA と同様に動作します。つまり、Dir 関数のパラメータに 16 を指定すると、サブディレクトリだけでなく通常のファイルも返されます。}}
  
 
{{Documentation/Note|VBA では、'''隠しファイル'''、'''システムファイル'''、'''アーカイブファイル'''、'''ボリューム名'''などの属性に基づいた検索オプションを利用できます。{{OOo}} Basic の場合、このようなファイル機能の存在しないオペレーティングシステム上での操作も前提としているため、該当するオプションは用意されていません。}}
 
{{Documentation/Note|VBA では、'''隠しファイル'''、'''システムファイル'''、'''アーカイブファイル'''、'''ボリューム名'''などの属性に基づいた検索オプションを利用できます。{{OOo}} Basic の場合、このようなファイル機能の存在しないオペレーティングシステム上での操作も前提としているため、該当するオプションは用意されていません。}}
  
{{Documentation/Note|<tt>Dir</tt> に一覧で指定されたパスでは、* および ? を使用する可能性があります。VBA および {{OOo}} Basic 両方のプレースホルダとして使用できます。ただし VBA とは異なり、{{OOo}} Basic で * プレースホルダを使用すると、ファイル拡張子かファイル名の最後の文字のみが一致する場合があります。}}
+
{{Documentation/Note|<tt>Dir</tt> に一覧で指定されたパスでは、* および ? を使用する可能性がありますが、これらは VBA および {{OOo}} Basic 両方のプレースホルダとして使用できます。ただし VBA とは異なり、{{OOo}} Basic で * プレースホルダを使用すると、ファイル拡張子かファイル名の最後の文字のみが一致する場合があります。}}
  
 
=== ディレクトリの作成および削除 ===
 
=== ディレクトリの作成および削除 ===
Line 75: Line 75:
 
</source>
 
</source>
  
この関数は、ディレクトリおよびサブディレクトリを作成します。また必要であれば、指定ディレクトリに対する下層ディレクトリも作成できます。たとえば <tt>C:\SubDir1</tt> ディレクトリのみが存在する状況で以下のコードを実行したとします。
+
この関数は、ディレクトリおよびサブディレクトリを作成します。また必要であれば、指定ディレクトリに対する下層ディレクトリも作成できます。たとえば <tt>C:\SubDir1</tt> ディレクトリのみが存在する状況で次のコードを実行したとします。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 91: Line 91:
 
ディレクトリにサブディレクトリまたはファイルが含まれている場合、'''それらも削除されます。'''このため、<tt>RmDir</tt> を使用する場合は、注意が必要です。
 
ディレクトリにサブディレクトリまたはファイルが含まれている場合、'''それらも削除されます。'''このため、<tt>RmDir</tt> を使用する場合は、注意が必要です。
  
{{Documentation/Note|VBA の <tt>MkDir</tt> 関数および <tt>RmDir 関数は、現在のディレクトリのみを操作対象とします。</tt>これに対して、{{OOo}} Basic では、<tt>MkDir</tt> および <tt>RmDir</tt> を使用して、複数レベルのディレクトリを作成または削除できます。}}
+
{{Documentation/Note|VBA の <tt>MkDir</tt> 関数および <tt>RmDir</tt> 関数は、現在のディレクトリのみを操作対象とします。これに対して、{{OOo}} Basic では、<tt>MkDir</tt> および <tt>RmDir</tt> を使用して、複数レベルのディレクトリを作成または削除できます。}}
  
{{Documentation/Note|VBA の <tt>RmDir</tt> 関数で、ファイルを含むディレクトリを削除しようとするとエラーメッセージが\'95\'5c示されます。{{OOo}} Basic の場合は、指定ディレクトリ '''およびその中のすべてのファイル''' が削除されます。<tt>CompatibilityMode ( true )</tt> 関数を使用すると、{{OOo}} Basic は、VBA と同じように動作します。}}
+
{{Documentation/Note|VBA の <tt>RmDir</tt> 関数で、ファイルを含むディレクトリを削除しようとするとエラーメッセージが表示されます。{{OOo}} Basic の場合は、指定ディレクトリ'''およびその中のすべてのファイル'''が削除されます。<tt>CompatibilityMode ( true )</tt> 関数を使用すると、{{OOo}} Basic は、VBA と同じように動作します。}}
  
 
=== ファイルのコピー、名前変更、削除および存在確認 ===
 
=== ファイルのコピー、名前変更、削除および存在確認 ===
  
次の呼び出しでは、<tt>Source</tt>: という名前で、<tt>Destination</tt> ファイルのコピーが作成されます。
+
次の呼び出しでは、<tt>Destination</tt> という名前で、<tt>Source</tt> ファイルのコピーが作成されます。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 103: Line 103:
 
</source>
 
</source>
  
次の関数を使用すると、<tt>OldName</tt> ファイルを <tt>NewName</tt> という名前に変更できます。このようにコン\'83\'7dを使わずキーワード <tt>As</tt> を使用するのが、Basic 言語の基\'96\'7b形です。
+
次の関数を使用すると、<tt>OldName</tt> ファイルを <tt>NewName</tt> という名前に変更できます。このようにコンマを使わずキーワード <tt>As</tt> を使用する構文が、Basic 言語の基本形です。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 123: Line 123:
 
</source>
 
</source>
  
=== ファイル属性の取得と変更 ===
+
=== ファイル属性の読み取りと変更 ===
  
ファイル関連の処理を行う際には、ファイル属性の変更、最終変更日の取得、ファイルサイズの確認などの操作が必要となる場合があります。
+
ファイル関連の処理を行う際には、最終変更日時、ファイルサイズなどのファイル属性の確認が重要となる場合があります。
  
 
次の呼び出しでは、ファイルに関するいくつかの属性が返されます。
 
次の呼び出しでは、ファイルに関するいくつかの属性が返されます。
Line 134: Line 134:
 
</source>
 
</source>
  
戻り値はビット\'83\'7dスクの形式で返され、その中には以下のような情報が含まれています。
+
戻り値はビットマスクの形式で返され、その中には次のような情報が含まれています。
  
 
* 1 : 読み取り専用のファイル
 
* 1 : 読み取り専用のファイル
 
* 16 : ディレクトリ名
 
* 16 : ディレクトリ名
  
ここでは、<tt>test.txt</tt> という名前のファイルのビットマスクを取得して、その情報を基に、読み取り専用であるかどうか、またディレクトリであるかどうかを調べています。どちらにも該当しなかった場合は、変数 <tt>FileDescription</tt> に「normal」という文字列を代入させています。
+
ここでは、<tt>test.txt</tt> という名前のファイルのビットマスクを判定して、その情報を基に、読み取り専用であるかどうか、またディレクトリであるかどうかを調べています。どちらにも該当しなかった場合は、変数 <tt>FileDescription</tt> に「normal」という文字列を代入させています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 164: Line 164:
 
{{Documentation/Note|VBA では、'''隠しファイル'''、'''システムファイル、アーカイブファイル'''、'''ボリューム名'''のファイル属性を示すフラグを利用できますが、これらは Windows 固有の機能であり、{{OOo}} Basic の場合は、このような機能の存在しないオペレーティングシステム上での操作も前提としているため、これらのフラグはサポートされていません。}}
 
{{Documentation/Note|VBA では、'''隠しファイル'''、'''システムファイル、アーカイブファイル'''、'''ボリューム名'''のファイル属性を示すフラグを利用できますが、これらは Windows 固有の機能であり、{{OOo}} Basic の場合は、このような機能の存在しないオペレーティングシステム上での操作も前提としているため、これらのフラグはサポートされていません。}}
  
ファイル属性を変更するには、<tt>SetAttr 関数を使用します。</tt>次の呼び出しは、指定ファイルに読み取り専用の属性を設定しています。
+
ファイル属性を変更するには、<tt>SetAttr</tt> 関数を使用します。次の呼び出しは、指定ファイルに読み取り専用の属性を設定しています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 170: Line 170:
 
</source>
 
</source>
  
逆に、ファイルの読み取り専用属性を解除するには、以下のように指定します。
+
逆に、ファイルの読み取り専用属性を解除するには、次のように指定します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 176: Line 176:
 
</source>
 
</source>
  
ファイルを最後に変更した日付と時刻を調べるには、<tt>FileDateTime 関数を使用します。</tt>このようにして得られる日付の書式は、システムのロケール設定に従います。
+
ファイルを最後に変更した日付と時刻を調べるには、<tt>FileDateTime</tt> 関数を使用します。このようにして得られる日付の書式は、システムのロケール設定に従います。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 190: Line 190:
 
== テキストファイルの書き込みと読み取り ==
 
== テキストファイルの書き込みと読み取り ==
  
{{OOo}} Basic には、ファイルの書き込みおよび読み取り用の各種メソッドが用意されています。以下の説明は、テキストファイル関係の機\'94\'5cをまとめたものです (注意: StarSuite の文書ドキュメントに関するものでは '''ありません''')。
+
{{OOo}} Basic には、ファイルの書き込みおよび読み取り用の各種メソッドが用意されています。次の説明は、テキストファイル関係の機能をまとめたものです (注意: StarSuite の文書ドキュメントに関するものでは'''ありません''')。
  
 
=== テキストファイルへの書き込み ===
 
=== テキストファイルへの書き込み ===
  
テキストファイルにアクセスするには、該当ファイルを事前にオープンしておく必要があります。その際には、フリーの '''ファイルハンドル''' を使って、アクセスするファイルを特定します。
+
テキストファイルにアクセスするには、該当ファイルを事前にオープンしておく必要があります。その際には、フリーの'''ファイルハンドル'''を使って、アクセスするファイルを特定します。
  
フリーのファイルハンドルの取得には、<tt>FreeFile 関数を使用します。</tt>このハンドルは、<tt>Open 命令によるファイルオープン時にパラメータとして指定します。</tt>テキストファイルとしてファイルをオープンするには、以下のように <tt>Open</tt> 命令を記述します。
+
フリーのファイルハンドルを作成するには、<tt>FreeFile</tt> 関数を使用します。このハンドルは、<tt>Open</tt> 命令によるファイルオープン時にパラメータとして指定します。テキストファイルとしてファイルをオープンするには、次のように <tt>Open</tt> 命令を記述します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 202: Line 202:
 
</source>
 
</source>
  
<tt>Filename</tt><Check Alignment of PHs>ここで  には、ファイル名を文字列の形で指定します。<tt>FileNo</tt>同じく  には、<tt>FreeFile</tt> 関数で取得しておいたファイルハンドルを指定します。
+
 
 +
                    ここで <tt>Filename</tt> には、ファイル名を文字列の形で指定します。同じく <tt>FileNo</tt> には、<tt>FreeFile</tt> 関数で作成したファイルハンドルを指定します。
  
 
オープンしたファイルに対しては、<tt>Print</tt> 命令により、1 行単位の書き込みが行えます。
 
オープンしたファイルに対しては、<tt>Print</tt> 命令により、1 行単位の書き込みが行えます。
Line 210: Line 211:
 
</source>
 
</source>
  
<tt>FileNo</tt><Check Alignment of PHs>ここでも  はファイルハンドルを示します。第 2 パラメータのテキストは、テキストファイルへ書き込む行の内容を示します。
+
 
 +
                    ここでも <tt>FileNo</tt> はファイルハンドルを示します。第 2 パラメータのテキストは、テキストファイルへ書き込む行の内容を示します。
  
 
書き込みの終了したファイルに対しては、<tt>Close</tt> によるクローズ処理が必要です。
 
書き込みの終了したファイルに対しては、<tt>Close</tt> によるクローズ処理が必要です。
Line 220: Line 222:
 
この場合も、ファイルハンドルを指定する必要があります。
 
この場合も、ファイルハンドルを指定する必要があります。
  
以下のサンプルコードは、ファイルのオープンから、書き込み、クローズまでの流れを示します。
+
次のサンプルコードは、ファイルのオープンから、書き込み、クローズまでの流れを示します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 238: Line 240:
 
=== テキストファイルの読み取り ===
 
=== テキストファイルの読み取り ===
  
テキストファイルの読み取りは、書き込みと同様の手順で行います。ただし <tt>Open</tt> 命令によるファイルのオープン時には <tt>For Input</tt> の代わりに <tt>For Output を指定し、Print 命令によるデータの書き込みではなく Line Input 命令によるデータの読み込みを行う点が異なります。</tt>
+
テキストファイルの読み取りは、書き込みと同様の手順で行います。ただし <tt>Open</tt> 命令によるファイルのオープン時には <tt>For Output</tt> の代わりに <tt>For Input</tt> を指定し、Print 命令によるデータの書き込みではなく Line Input 命令によるデータの読み取りを行う点が異なります。
  
 
テキストファイルの呼び出し時に、<tt>eof</tt> 命令を使用して、ファイルの末尾に到達したかどうかを確認します。
 
テキストファイルの呼び出し時に、<tt>eof</tt> 命令を使用して、ファイルの末尾に到達したかどうかを確認します。
Line 246: Line 248:
 
</source>
 
</source>
  
以下のサンプルコードは、テキストファイルからのデータの読み取り手順を示します。
+
次のサンプルコードは、テキストファイルからのデータの読み取り手順を示します。
  
 
<source lang="oobas">
 
<source lang="oobas">

Revision as of 22:08, 27 November 2008

doc OOo
Book.png

ファイル操作は、アプリケーションの基本タスクの 1 つです。Apache OpenOffice API には、Office ドキュメントの作成、オープン、編集用に必要となる、各種のオブジェクトが用意されています。オブジェクトの詳細情報については、「Apache OpenOffice API ついて」を参照してください。また状況によっては、ファイルシステムの直接アクセス、ディレクトリの検索、テキストファイルの編集などを行う必要もあります。Apache OpenOffice Basic の実行時ライブラリには、このような処理を行うための関数が各種用意されています。

Template:Documentation/Note

ファイル管理

ディレクトリ内のファイル検索

ディレクトリシステム内でファイルやサブディレクトリの検索を行うには、Apache OpenOffice Basic の Dir 関数を使用します。Dir 関数を最初に使用する際には、検索するディレクトリのパスを第 1 パラメータとして指定する必要があります。Dir 関数の第 2 パラメータには、検索するファイルやディレクトリの名前を指定します。この関数の戻り値としては、最初に見つかったディレクトリエントリの名前が Apache OpenOffice Basic により返されます。次の該当エントリを取得するには、パラメータを付けずに再度 Dir 関数を呼び出します。該当するエントリが存在しなかった場合、Dir 関数は空白文字列を返します。

次のサンプルコードでは、Dir 関数を使って、指定ディレクトリ内に存在するすべてのファイルを一覧表示します。この手続きでは、個々のファイル名を変数 AllFiles に記録してゆき、最後の段階でメッセージボックスに一括表示させています。

Sub ShowFiles
  Dim NextFile As String
  Dim AllFiles As String
 
  AllFiles = ""
  NextFile = Dir("C:\", 0)
 
  While NextFile  <> ""
    AllFiles = AllFiles & Chr(13) &  NextFile 
    NextFile = Dir
  Wend
 
  MsgBox AllFiles
End Sub

Dir 関数の第 2 パラメータに 0 (ゼロ) を指定しているのは、ディレクトリを無視してファイル名のみを Dir 関数に返させるためです。このようなパラメータ値としては、次のものを指定できます。

  • 0:通常のファイルのみを対象とする。
  • 16:サブディレクトリのみを対象とする。

次のサンプルコードでは、基本的に上記のものと同じ処理を行なっていますが、こちらは Dir 関数の第 2 パラメータに 16 を指定しているので、ファイルではなくサブディレクトリを対象にしています。

Sub ShowDirs
  Dim NextDir As String
  Dim AllDirs As String
 
  AllDirs = ""
  NextDir = Dir("C:\", 16)
 
  While NextDir <> ""
    AllDirs = AllDirs & Chr(13) &  NextDir
    NextDir  <nowiki>= Dir</nowiki>
  Wend
 
  MsgBox AllDirs
End Sub

Template:Documentation/Note

Template:Documentation/Note

Template:Documentation/Note

ディレクトリの作成および削除

Apache OpenOffice Basic でディレクトリを作成するには、MkDir 関数を使用します。

MkDir ("C:\SubDir1")

この関数は、ディレクトリおよびサブディレクトリを作成します。また必要であれば、指定ディレクトリに対する下層ディレクトリも作成できます。たとえば C:\SubDir1 ディレクトリのみが存在する状況で次のコードを実行したとします。

MkDir ("C:\SubDir1\SubDir2\SubDir3\")

この場合、C:\SubDir1\SubDir2 ディレクトリおよび C:\SubDir1\SubDir2\SubDir3 ディレクトリの両方が作成されます。

ディレクトリを削除するには、RmDir 関数を使用します。

RmDir ("C:\SubDir1\SubDir2\SubDir3\")

ディレクトリにサブディレクトリまたはファイルが含まれている場合、それらも削除されます。このため、RmDir を使用する場合は、注意が必要です。

Template:Documentation/Note

Template:Documentation/Note

ファイルのコピー、名前変更、削除および存在確認

次の呼び出しでは、Destination という名前で、Source ファイルのコピーが作成されます。

FileCopy(Source, Destination)

次の関数を使用すると、OldName ファイルを NewName という名前に変更できます。このようにコンマを使わずキーワード As を使用する構文が、Basic 言語の基本形です。

Name OldName As NewName

次の呼び出しでは、Filename ファイルが削除されます。ディレクトリ (およびその中のファイル) を削除するには、RmDir 関数を使用してください。

Kill(Filename)

特定のファイルが存在するかを確認するには、FileExists 関数を使用します。

If FileExists(Filename) Then 
  MsgBox "file exists."
End If

ファイル属性の読み取りと変更

ファイル関連の処理を行う際には、最終変更日時、ファイルサイズなどのファイル属性の確認が重要となる場合があります。

次の呼び出しでは、ファイルに関するいくつかの属性が返されます。

Dim Attr As Integer
Attr = GetAttr(Filename)

戻り値はビットマスクの形式で返され、その中には次のような情報が含まれています。

  • 1 : 読み取り専用のファイル
  • 16 : ディレクトリ名

ここでは、test.txt という名前のファイルのビットマスクを判定して、その情報を基に、読み取り専用であるかどうか、またディレクトリであるかどうかを調べています。どちらにも該当しなかった場合は、変数 FileDescription に「normal」という文字列を代入させています。

Dim FileMask As Integer
Dim FileDescription As String
 
FileMask = GetAttr("test.txt")
 
If (FileMask AND 1) > 0 Then
  FileDescription = FileDescription & " read-only "
End IF
 
If (FileMask AND 16) > 0 Then
  FileDescription = FileDescription & " directory "
End IF
 
If FileDescription = "" Then
  FileDescription = " normal "
End IF
 
MsgBox FileDescription

Template:Documentation/Note

ファイル属性を変更するには、SetAttr 関数を使用します。次の呼び出しは、指定ファイルに読み取り専用の属性を設定しています。

SetAttr("test.txt", 1)

逆に、ファイルの読み取り専用属性を解除するには、次のように指定します。

SetAttr("test.txt", 0)

ファイルを最後に変更した日付と時刻を調べるには、FileDateTime 関数を使用します。このようにして得られる日付の書式は、システムのロケール設定に従います。

FileDateTime("test.txt")   ' Provides date and time of the last file amendment.

ファイルサイズを調べるには、FileLen 関数を使用します (戻り値はロング整数のバイト値)。

FileLen("test.txt")      ' Provides the length of the file in bytes

テキストファイルの書き込みと読み取り

Apache OpenOffice Basic には、ファイルの書き込みおよび読み取り用の各種メソッドが用意されています。次の説明は、テキストファイル関係の機能をまとめたものです (注意: StarSuite の文書ドキュメントに関するものではありません)。

テキストファイルへの書き込み

テキストファイルにアクセスするには、該当ファイルを事前にオープンしておく必要があります。その際には、フリーのファイルハンドルを使って、アクセスするファイルを特定します。

フリーのファイルハンドルを作成するには、FreeFile 関数を使用します。このハンドルは、Open 命令によるファイルオープン時にパラメータとして指定します。テキストファイルとしてファイルをオープンするには、次のように Open 命令を記述します。

Open Filename For Output As #FileNo


                   ここで Filename には、ファイル名を文字列の形で指定します。同じく FileNo には、FreeFile 関数で作成したファイルハンドルを指定します。

オープンしたファイルに対しては、Print 命令により、1 行単位の書き込みが行えます。

Print #FileNo, "This is a test line."


                   ここでも FileNo はファイルハンドルを示します。第 2 パラメータのテキストは、テキストファイルへ書き込む行の内容を示します。

書き込みの終了したファイルに対しては、Close によるクローズ処理が必要です。

Close #FileNo

この場合も、ファイルハンドルを指定する必要があります。

次のサンプルコードは、ファイルのオープンから、書き込み、クローズまでの流れを示します。

Dim FileNo As Integer
Dim CurrentLine As String
Dim Filename As String
 
Filename = "c:\data.txt"            ' Define file name 
FileNo = Freefile               ' Establish free file handle
 
Open Filename For Output As #FileNo         ' Open file (writing mode)
Print #FileNo, "This is a line of text"      ' Save line 
Print #FileNo, "This is another line of text"   ' Save line 
Close #FileNo                  ' Close file

テキストファイルの読み取り

テキストファイルの読み取りは、書き込みと同様の手順で行います。ただし Open 命令によるファイルのオープン時には For Output の代わりに For Input を指定し、Print 命令によるデータの書き込みではなく Line Input 命令によるデータの読み取りを行う点が異なります。

テキストファイルの呼び出し時に、eof 命令を使用して、ファイルの末尾に到達したかどうかを確認します。

eof(FileNo)

次のサンプルコードは、テキストファイルからのデータの読み取り手順を示します。

Dim FileNo As Integer
Dim CurrentLine As String
Dim File As String
Dim Msg as String
 
' Define filename 
Filename = "c:\data.txt"
 
' Establish free file handle
FileNo = Freefile
 
' Open file (reading mode)
Open Filename For Input As FileNo
 
' Check whether file end has been reached
Do While not eof(FileNo)
  ' Read line 
  Line Input #FileNo, CurrentLine   
  If CurrentLine <>"" then
    Msg = Msg & CurrentLine & Chr(13)
  end if
Loop
 
 
' Close file 
 
Close #FileNo               
Msgbox Msg

ここでは、Do While ループを使ってデータを 1 行ずつ読み出しては、変数 Msg に追加することにより格納してゆき、最後にまとめてメッセージボックスに出力させています。

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools