Euphoria-files-io

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

Euphoria-ファイルI/O

Euphoriaプログラミング言語を使用すると、フロッピードライブまたはハードドライブのファイルデータを読み取って変更するプログラムを作成したり、出力形式として新しいファイルを作成したりできます。 プリンターやモデムなど、コンピューター上のデバイスにアクセスすることもできます。

この章では、Euphoriaで利用可能なすべての基本的なI/O機能について説明しました。 その他の機能については、標準のEuphoriaのドキュメントを参照してください。

画面に表示する

出力を生成する最も簡単な方法は、_puts()_ステートメントを使用することです。このステートメントでは、画面に表示する文字列を渡すことができます。 動的な値を使用して文字列をフォーマットする必要がある場合にも使用できる別のメソッド_printf()_があります。

これらのメソッドは、文字列に渡す式を変換し、次のように結果を標準出力に書き込みます-

#!/home/euphoria-4.0b2/bin/eui

puts(1, "Euphoria is really a great language, isn't it?" )

これにより、標準画面に次の結果が生成されます-

Euphoria is really a great language, isn't it?

ファイルの開閉

Euphoriaは、デフォルトでファイルを操作するために必要な基本的な方法を提供します。 次の方法を使用して、ファイル操作のほとんどを行うことができます-

  • 開いた()
  • 閉じる()
  • printf()
  • 取得()
  • getc()

_open_メソッド

ファイルを読み書きする前に、Euphoriaの組み込みopen() methodを使用してファイルを開く必要があります。 この関数は、関連する他のサポートメソッドを呼び出すために使用されるファイル記述子を作成します。

構文

integer file_num = open(file_name, access_mode)

上記のメソッドは、指定されたファイル名を開く際にエラーが発生した場合に-1を返します。 ここにパラメータがあります-

  • file_name -file_name引数は、アクセスするファイルの名前を含む文字列値です。
  • access_mode -access_modeは、ファイルを開く必要があるモードを決定します。 たとえば、読み取り、書き込み、追加など。 ファイルを開くモードの可能な値の完全なリストは、次の表に記載されています-
S.No Modes & Description
1

r

読み取り専用のテキストファイルを開きます。 ファイルポインタはファイルの先頭に置かれます。

2

rb

バイナリ形式でのみ読み取り用にファイルを開きます。 ファイルポインタはファイルの先頭に置かれます。

3

w

書き込み専用のテキストファイルを開きます。 ファイルが存在する場合はファイルを上書きします。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。

4

wb

バイナリ形式でのみ書き込み用にファイルを開きます。 ファイルが存在する場合はファイルを上書きします。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。

5

u

読み取りと書き込みの両方のためにファイルを開きます。 ファイルポインターは、ファイルの先頭に設定されます。

6

ub

読み取りと書き込みの両方のファイルをバイナリ形式で開きます。 ファイルポインタはファイルの先頭に置かれます。

7

a

追加するファイルを開きます。 ファイルが存在する場合、ファイルポインターはファイルの末尾にあります(追加モード)。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。

8

ab

バイナリ形式で追加するためのファイルを開きます。 ファイルが存在する場合、ファイルポインターはファイルの末尾にあります(追加モード)。 ファイルが存在しない場合は、書き込み用の新しいファイルを作成します。

次の例では、Linuxシステムの現在のディレクトリに新しいテキストファイルを作成します-

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile,txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

ファイルが正常に開いた場合、「myfile.txt」が現在のディレクトリに作成され、次の結果が生成されます-

File opend successfully

_close()_メソッド

close()メソッドは、書き込まれていない情報をすべてフラッシュし、ファイルを閉じます。その後、ファイルに対する読み取りまたは書き込みができなくなります。

Euphoriaは、ファイルの参照オブジェクトが別のファイルに再割り当てされると、自動的にファイルを閉じます。 close()メソッドを使用してファイルを閉じることをお勧めします。

構文

close( file_num );

ここでは、ファイルを開いているときに受け取ったファイル記述子がパラメーターとして渡されます。

次の例では、上記のようにファイルを作成し、プログラムが存在する前にそれを閉じます-

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

これは、次の結果を生成します-

File opend successfully
File closed successfully

ファイルの読み書き

Euphoriaには、テキストモードまたはバイナリモードでファイルを読み書きする際の作業を楽にするアクセス方法のセットが用意されています。 _printf()_および_gets()_メソッドを使用してファイルを読み書きする方法を見てみましょう。

_printf()_メソッド

_printf()_メソッドは、開いているファイルに任意の文字列を書き込みます。

構文

printf(fn, st, x)

ここにパラメータがあります-

  • fn -open()メソッドから受け取ったファイル記述子。
  • st -10進数またはアトムが%dを使用してフォーマットされ、ストリングまたはシーケンスが%sを使用してフォーマットされるフォーマット文字列。
  • x -xがシーケンスの場合、stの書式指定子はxの対応する要素と一致します。 xがアトムの場合、通常stには1つのフォーマット指定子のみが含まれ、xに適用されます。 しかしながら; stに複数の書式指定子が含まれている場合、それぞれが同じ値xに適用されます。

次の例では、ファイルを開き、このファイルに人の名前と年齢を書き込みます-

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

printf(file_num, "My name is %s and age is %d\n", {"Zara", 8})

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

上記の例は、_myfile.txt_ファイルを作成します。 指定されたコンテンツをそのファイルに書き込み、最終的に閉じます。 このファイルを開くと、次の内容になります-

My name is Zara and age is 8

_gets()_メソッド

_gets()_メソッドは、開いているファイルから文字列を読み取ります。

構文

gets(file_num)

ここで渡されるパラメーターは、_opend()_メソッドによって返されるファイルの説明です。 このメソッドは、ファイルの先頭から1行ずつ読み取りを開始します。 文字の値は0〜255です。 アトム-1はファイルの終わりに返されます。

作成済みのファイル_myfile.txt_を取得してみましょう。

#!/home/euphoria-4.0b2/bin/eui

integer file_num
object line

constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "r")
if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

line = gets(file_num)
printf( STDOUT, "Read content : %s\n", {line})

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

これは、次の結果を生成します-

File opend successfully
Read content : My name is Zara and age is 8

File closed successfully

Euphoriaは、ファイルの操作に役立つ多くのメソッドのリストを提供します。 これらのメソッドは、link:/euphoria/euphoria_library_routines [Euphoria Library Routines]にリストされています。