ユーフォリア-ファイル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は、デフォルトでファイルを操作するために必要な基本的なメソッドを提供します。次の方法を使用して、ファイル操作のほとんどを実行できます-
- open()
- close()
- printf()
- gets()
- getc()
オープン方法
ファイルの読み取りまたは書き込みを行う前に、Euphoriaの組み込みopen()メソッドを使用してファイルを開く必要があります。この関数は、それに関連付けられた他のサポートメソッドを呼び出すために使用されるファイル記述子を作成します。
構文
integer file_num = open(file_name, access_mode)
上記のメソッドは、指定されたファイル名を開くときにエラーが発生した場合に-1を返します。ここにパラメータがあります-
file_name − file_name引数は、アクセスするファイルの名前を含む文字列値です。
access_mode− access_modeは、ファイルを開く必要があるモードを決定します。たとえば、読み取り、書き込み、追加などです。ファイルを開くモードで可能な値の完全なリストを次の表に示します。
S.No | モードと説明 |
---|---|
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()メソッドは、書き込まれていない情報をフラッシュしてファイルを閉じます。その後、ファイルに対して読み取りまたは書き込みを行うことはできなくなります。
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(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は、ファイルの操作に役立つ多くの方法のリストを提供します。これらのメソッドは、Euphoria LibraryRoutinesにリストされています。