Euphoria 文件I/O - Euphoria教程

使用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() and getc() methods.

open 方法:

读取或写入文件之前,必须打开它使用欣快内置的open() 方法。这个函数创建一个文件描述符,这将被用来调用与它相关联的其他支持方式。

语法:

integer file_num = open(file_name, access_mode)

以上方法返回-1的情况下有一个错误打开给定的文件名。下面是详细的参数研究:

  • file_name: file_name 参数是一个字符串值,其中包含要访问的文件的名称。

  • access_mode: access_mode决定模式,即打开文件。读,写追加等可能值的完整列表在下面的表中给出。

下面是一个清单的不同的模式打开一个文件:

模式 描述
r Opens a text file for reading only. The file pointer is placed at the beginning of the file.
rb Opens a file for reading only in binary format. The file pointer is placed at the beginning of the file.
w Opens a text file for writing only. Overwrites the file if the file exists. If the file does not exist, creates a new file for writing.
wb Opens a file for writing only in binary format. Overwrites the file if the file exists. If the file does not exist, creates a new file for writing.
u Opens a file for both reading and writing. The file pointer will be at the beginning of the file.
ub Opens a file for both reading and writing in binary format. The file pointer will be at the beginning of the file.
a Opens a file for appending. The file pointer is at the end of the file if the file exists. That is, the file is in the append mode. If the file does not exist, it creates a new file for writing.
ab Opens a file for appending in binary format. The file pointer is at the end of the file if the file exists. That is, the file is in the append mode. If the file does not exist, it creates a new file for writing.

例子:

下面的例子在你的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() 方法刷新不成文的任何信息,并关闭该文件后,没有更多的读取或写入文件可以做。

幸福感会自动关闭一个文件一个文件时的参考对象被重新分配到另一个文件。这是一个很好的做法,使用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: 十进制或原子将被格式化%d和字符串或字符序列的格式字符串将被格式化,用%s。

  • x: 如果x是一个序列,然后从st再配上相应元素的x格式说明符。如果x是一个原子,那么通常st将只包含一个格式说明符,它将被应用于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() 方法返回。这种方法的文件一行行从一开始就开始读。字符将具有从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 提供了许多方法,它可以帮助处理文件的列表。