05-Fortran基础--Fortran文件操作
- 0 引言
- 1 文件操作有关的关键字介绍
- 1.1 打开文件(OPEN)
- 1.2 文件关闭(CLOSE)
- 1.3 文件查询(INQUIRE)
- 1.3 文件读写(read/write)
- 1.4 文件操作符(BACKSPACE/DELETE/FIND/REWIND/FLUSH)
- 2 结语
0 引言
利用fortran进行文件的常见操作包括文件读写、文件打开、文件关闭和一些文件有关的关键字。
1 文件操作有关的关键字介绍
1.1 打开文件(OPEN)
在Fortran中,使用open语句可以打开一个文件,以便进行读取、写入或修改操作。这个语句的一般形式如下:
open(unit=unit_number, file=file_name, status=status_specifier, action=action_specifier, &
access=access_specifier, iostat=iostat_variable, [other_options])
其中:
unit_number
是一个整数变量,用来标识文件。file_name
是一个字符串,表示要打开的文件的路径和名称。status_specifier
指定文件的状态,可以是’old’(打开一个已存在的文件)、‘new’(创建一个新文件)、‘replace’(替换一个已存在的文件)或’unknown’(如果文件不存在则创建一个新文件)。action_specifier
指定文件的操作,可以是’read’(读取文件)、‘write’(写入文件)、‘readwrite’(读写文件)或 ‘scratch’(临时文件)。access_specifier
指定文件的访问权限,可以是 ‘sequential’(顺序访问)或 ‘direct’(直接访问)。iostat_variable
是一个整数变量,用来存储输入/输出操作的状态码。如果省略,可以使用iostat选项来获取状态码。[other_options]
包括其他选项,如form(指定文件格式)、action(指定文件操作)等。
下面是一个简单的例子,演示了如何使用open语句来打开一个文件以供写入:
program open_example
implicit none
integer :: unit_number, i
character(len=50) :: file_name
! 定义文件名和文件单元号
file_name = 'data.txt'
unit_number = 10
! 打开文件以供写入
open(unit=unit_number, file=file_name, status='unknown', action='write')
! 写入数据到文件
do i = 1, 10
write(unit_number, '(I2)') i
end do
! 关闭文件
close(unit_number)
end program open_example
执行之后会生成一个文件,文件内容如下:
这个例子中,程序打开一个名为’data.txt’的文件以供写入,然后写入数字1到10到文件中,最后关闭文件。
1.2 文件关闭(CLOSE)
在Fortran中,使用close语句可以关闭已经打开的文件。关闭文件后,将释放与该文件相关联的系统资源,并确保文件的内容被正确写入磁盘。close语句的一般形式如下:
close(unit=unit_number, iostat=iostat_variable, [other_options])
其中:
unit_number
是一个整数变量,表示要关闭的文件的单元号。
iostat_variable
是一个整数变量,用来存储输入/输出操作的状态码。如果省略,可以使用iostat选项来获取状态码。
[other_options]
包括其他选项,如status(指定关闭文件的行为)等。
下面是一个示例,演示了如何使用close语句关闭一个已经打开的文件:
program close_example
implicit none
integer :: unit_number, i
character(len=50) :: file_name
! 定义文件名和文件单元号
file_name = 'data.txt'
unit_number = 10
! 打开文件以供写入
open(unit=unit_number, file=file_name, status='unknown', action='write')
! 写入数据到文件
do i = 1, 10
write(unit_number, '(I2)') i
end do
! 关闭文件
close(unit_number)
end program close_example
在这个例子中,文件"data.txt"被打开并写入数据后,通过close语句关闭了文件。
1.3 文件查询(INQUIRE)
在Fortran中,可以使用inquire语句来查询文件的属性,比如文件是否存在、文件大小等信息。inquire语句的一般形式如下:
inquire([inquire_spec], [iostat=iostat_variable], [other_options])
其中:
inquire_spec
是一个可选的查询说明符,用于指定要查询的属性。可以是file(文件名)、unit(文件单元号)或 iostat(指定输入/输出操作的状态码)。
iostat_variable
是一个整数变量,用来存储输入/输出操作的状态码。如果省略,可以使用iostat选项来获取状态码。
[other_options]
包括其他选项,如exist(文件是否存在)、opened(文件是否已打开)等。
下面是一个示例,演示了如何使用inquire语句查询文件是否存在:
program inquire_example
implicit none
character(len=50) :: file_name
logical :: file_exists
! 定义文件名
file_name = 'data.txt'
! 查询文件是否存在
inquire(file=file_name, exist=file_exists)
! 查询文件是否打开
!inquire(file=file_name, opened=file_opened)
! 输出结果
if (file_exists) then
print*, '文件存在'
else
print*, '文件不存在'
end if
end program inquire_example
在这个例子中,程序使用inquire语句查询名为’data.txt’的文件是否存在,并根据查询结果输出相应的消息。
1.3 文件读写(read/write)
在Fortran中,文件的读取和写入操作通常使用read和write语句来完成。下面是它们的详细介绍以及示例:
1.3.1 读取文件 (read)
read(unit_number, [format], [iostat=iostat_variable], [other_options]) [input_list]
unit_number
:整数变量,表示要读取数据的文件单元号。
format
:可选参数,用于指定输入数据的格式。可以是一个格式化的I/O描述符,例如’(I5)'表示读取一个5位整数。
iostat_variable
:可选参数,整数变量,用于存储读取操作的状态码。
[other_options]
:其他选项,如err(指定错误处理)等。
[input_list]
:读取数据的变量列表,根据format指定的格式进行解析。
示例:
program read_example
implicit none
integer :: unit_number, data
integer :: iostat_var
! 打开文件
unit_number = 10
open(unit=unit_number, file='data.txt', status='old', action='read')
! 从文件读取数据
read(unit_number, *) data
! 输出读取的数据
print*, '读取的数据:', data
! 关闭文件
close(unit_number)
end program read_example
1.3.2 写入文件 (write)
write(unit_number, [format], [iostat=iostat_variable], [other_options]) [output_list]
unit_number
:整数变量,表示要写入数据的文件单元号。
format
:可选参数,用于指定输出数据的格式。
iostat_variable
:可选参数,整数变量,用于存储写入操作的状态码。
[other_options]
:其他选项,如err(指定错误处理)等。
[output_list]
:待写入数据的变量列表。
示例:
program write_example
implicit none
integer :: unit_number, data
integer :: iostat_var
! 准备要写入的数据
data = 123
! 打开文件
unit_number = 10
open(unit=unit_number, file='output.txt', status='replace', action='write')
! 将数据写入文件
write(unit_number, *) data
! 关闭文件
close(unit_number)
end program write_example
以上示例演示了如何使用read和write语句读取和写入文件数据。在实际使用中,可以根据需要指定格式化的输入/输出描述符,以便正确解析和生成文件数据。
1.4 文件操作符(BACKSPACE/DELETE/FIND/REWIND/FLUSH)
在Fortran中,BACKSPACE、DELETE、FIND和REWIND是文件操作的关键字,用于对已打开的文件进行定位和控制。下面是它们的使用方法:
1.4.1 BACKSPACE
常用: 将文件定位到上一个记录的开头。
BACKSPACE(unit_number)
示例:
BACKSPACE(10)
这将把文件单位号为 10 的文件定位到上一个记录的开头,也就是返回一行。
1.4.2 DELETE
会用: 删除文件。
DELETE(file_name)
示例:
DELETE('data.txt')
这将删除名为 “data.txt” 的文件。
1.4.3 FIND
不常用: 在直接访问文件中搜索记录。
FIND(unit_number, value, iostat=iostat_var)
示例:
FIND(20, 'search_value', iostat=iostat_var)
这将在文件单位号为 20 的直接访问文件中搜索记录,并将结果存储在 iostat_var 中。
1.4.4 REWIND
常用: 将文件定位到开头。
REWIND(unit_number)
示例:
REWIND(30)
这将把文件单位号为 30 的文件定位到开头。
1.4.5 FLUSH
不常用: 将文件的缓冲区内容刷新到磁盘,确保数据被写入文件而不是仅停留在内存中。
FLUSH(unit_number)
1.4.6 REWRITE
不常用: 用新的数据替换文件中的现有数据。
REWRITE(unit_number)
REWRITE(20)
这将重写文件单位号为 20 的文件,将其内容替换为程序中提供的新数据。
2 结语
这些操作关键字允许在 Fortran 程序中对文件进行更灵活的操作,从而实现更复杂的文件处理需求。