FORTRAN95第05章-文件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)直接存取文件 所谓直接存取,指通过指定记录号对文件中的记录进行 读写操作,而不必按顺序依次存取各记录。可直接存取的文 件也称直接文件。在FORTRAN中,这种直接文件也分有格 式和无格式两种。 1)有格式直接文件 对这种文件,所有记录具有相同的长 度和相同的组成,记录可以按任意顺序读写。对这种文件,每 个记录的长度在打开文件时指定,如果写入的数据未达到指 定长度,则以空格补齐,以保证记录长度相等。 2)无格式直接文件 这种文件内容是以二进制形式写入和 读出的,除了写入数据未达到指定长度,要用丛“0”补齐外, 其他规定同有格式直接文件。
2015-6-11 7
11. ACTION=rw,用于设置文件的读写权限。rw可取‘READ‟,表示对 打 开的文件只能进行读操作;rw可取‘WRITE‟, 表示对打开的文件只能进 行 写操作;rw 可取‘READWRITE‟, 表示对打开的文件可以进行读取和写 入, 这是缺省值。 12. PAD=yn,yn可取‘YES‟,表示对打开的文件进行有格式读取时, 一 个记录前面无内容的字段用空格填充,这是缺省值;yn取‘NO‟时,无 内 容字段不用空格填充。该项只对有格式文件使用。 13. DELIM=aqn,aqn可取‘NONE‟, 表示只输出字符串中字符; aqn 可 取 ‘QUOTE‟,表示输出的字符串用双撇号括起, aqn可取 ‘APOSTROPHE‟, 输出的字符串用单撇号括起。 OPEN语句中的各项内容,除了文件号u之外,各项都是任选项,且 各项的顺序是任意的。另外注意,OPEN语句可以打开已存在的旧文件 或创建一个新文件,但要对文件进行读取操作时,一定要打开已存在的 旧的文件。 2015-6-11 8
③NML=namelist,用于一种特殊的说明方法,使用此 项时必须先用 NAMELIST 语句给被输入或输出的 一组变量起一个名字, 然后把这个名字写在NML 项中,这里的namelist就是这组变量的名字,用它 代替输入输出语句中的输入表ilist或输出表olist。 ④REC=rn,其中rn为记录号,可以是一个整数或可求 值的整表达式,该项只用于直接文件的读写操作。 ⑤END=label, 用于当读写到文件末尾时转去执行 标号为label的语句去执行, label是本程序段中某 个语句的标号。 ⑥IOSTAT=ios,ios是一个整型变量或数组元素, 用 于记录输入输出语句的执行状态。 当读写操作出 错时,ios中是大于0的整数; 当读写操作正常结 束时, ios的值等于0;当读写操作遇到文件时,ios 的值为一个负整数。
2015-6-11
4Baidu Nhomakorabea
5.1.2文件的基本操作 文件的基本操作包括文件的建立与删除, 文件的打开与关闭,文 件的输入输出(读和写)。在FORTRAN程序中,文件的建立与 打开使用同一个语句,即OPEN语句;文件的删除与关闭使用同 一个语句,即CLOSE语句;文件的输入输出分别使用 READ 和 WRITE语句。 一、OPEN语句 使用文件首先要打开文件,即首先要使用OPEN语句。 OPEN语句的一般形式: OPEN([UNIT=u][,FILE=filename][,FORM=fm][,STATUS=sta][,A CCESS=acc][,RECL=rl][,ERR=label][,IOSTAT=ios] [,BLANK=blank][,PCSITION=pos][,ACTION=rw][,PAD=yn] [,DELIM=aqn]) 该语句用于建立文件名与文件号之间的联系,即打开一个文 件。文件打开后, 再之后对文件操作时, 只需指定文件号, 不再用 文件名。该语句中各选项的作用如下:
“无格式”的文件实际是“二进制文件”,使用二进制文件存取速度快, 节省 存储空间且具有一定保密性,但不直观。有格式文件是“文本文件”,也就 是 以ASCII码形式保存文件中的数据,可以用各种文本编辑工作观看其内容, 如 2015-6-11 3 利用 windows的“记事本”。在Visual Fortran中可以直接查看这两种文件。
例如: open(2,file=‟exu‟,real=80,statue=‟new‟,access=‟direct‟, form=‟formated‟) 该语句的作用是:打开一个名为‘exu‟的新文件; 文件号为2; 文 件中每个记录长度为80个字节;采用直接存取方式; 文件内容是 有格式的。 open(8,file=‟fx‟,statue=‟old‟,form=‟unformat, access=‟direct‟, real=10‟) 该语句的作用是:打开一个名为fx的旧文件;文件号为8;文 件中的记录是无格式的;文件是直接存取文件,记录长度为8 个字节。 open(9,file=‟F3‟,status=‟old‟) 该语句的作用是:打开一个文件名为F3的旧文年,并与文件 号9关联。其他项省略,按FORTRAN规定,省略存取方式, 表 示为顺序文件,且文件中的记录是有格式的。
3.文件的存取方式 文件的存取方式也称文件的输入输出方式或读写方式。FORTRAN文件有 两种存取方式,即顺序存取方式和直接存取方式。 (1)顺序存取方式 所谓顺序存取,指从第1个记录开始, 将各记录按先后顺序逐个写入文件, 读出时也必须从第1个记录开始按记录的先后顺序逐个读出,即要读或写第I 个记录,必须先读或写前面的i-1个记录。按顺序存取方式进行存取操作的文 件也称顺序文件。在FORTRAN中,这种顺序文件又分为有格式和无格式文 件。 1)有格式顺序文件 这种文件指文件中的各记录按某种格式, 顺序写入文 件或从文件读出,各记录的长度可以不同。 2)无格式顺序文化 这种文件指文件中各记录写入与读出的都是按各数据 项在计算机内的二进制表示的形式,各记录的长度也可以不同。
2015-6-11 5
①UNIT=u,u表示被打开的文件号,可以是整型常数,如果为整型变量,必须 先对其赋值,‘UNIT=‟可以省略。 ②FILE=filename,用于指定打开的文件名, filename是一个字符表达式, 在windows或DOS环境下常要指明盘符,路径和文件名与扩展名。 ③FORM=fm,用于指定文件的格式,fm可取‘FORMATTED‟(打开有 格 式文件)或‘UNFORMATTED‟(打开无格式文件)。当省略此项时,若打 开 的是顺序文件,则隐含为有格式的,若打开的是直接文件,则隐含为无格式的。 ④STATUS=sta,此项用于说明打开的是一个新文件还是一个已经存在的 旧文件, sta可取‘CLD‟或‘NEW‟分别表示已存在的旧文件和新建文件;还 可以 取‘REPLACE‟,表示文件存在时,再重建一次, 原文件内容清除, 当文件不 存 在时,建一个新文件;还可以取‘SCRATCH‟ 此时不需在OPEN语句中使 用 ‘FILE‟ 项,它表示建一个临时文件,程序结束后自动删除; 此项还可以 取 ‘UNKNOWN‟,这也是缺省值,其含义由编译程序确定,一般相当于REPLACE 的 作用。 2015-6-11 6 ⑤ACCESS=acc,用于设置文件的存取方式。Acc可取
第5章 FORTRAN文件 本章介绍Fortran语言中文件的概念和用 法。通过本章的学习, 应了解文件的基本概 念及其用途、 掌握Fortran95语言中关于文件 的各种语句的使用方法。
2015-6-11
1
5.1 FORTRAN文件概述 5.1.1文件基本概念 1.文件 文件是信息集合。每个文件都要有一个“文件名”。文件名 一般 用字母、数字组成的字符串表示, 根据需求, 文件名前可以加上 盘符和路径。一个源程序,一个目标程序, 一批数据等都可以 作为一个文件,这里所说的FORTRAN文件通常指数据文件。 利用文件可以使数据长期保存在外存储器上,通过FORTRAN 程序中专门的文件操作语句可以实现文件的建立与删除, 打开与 关闭,输入与输出(读写)等操作。 2.文件的组成 一个文件由若干个记录组成。一个记录由一组数据项组成,这 种文件称为有结构文件, 如一个存储学生基本信息的“学生文 件”, 其中一个学生的学号、姓名、年龄、专业、 等数据项就是一个 记录,若干个这样的学生记录, 如一个班的学生情况信息就组 2015-6-11 2 成一个“学生文件”。也有的文件看作字节序列,不分记录。
⑥RECL=rl,用于指定记录长度,当打开的是顺序文件时,以字节为单 位,可以省略指定记录的最大长度; 当打开的是直接文件时,此项不能 省略,指定记录长度时,单位与编译器有关, 如Visual Fortran中为数值 1时,表示一个整数所占字节个数。Rl可以是常量或变量(必须先赋值)。 ⑦ERR=label,label为语句标号, 此项用于设置当打开文件的过程中发 生错误时,去执行label所指的语句。 ⑧IOSTAT=ios,ios为一个整型变量, 此项将OPEN语句执行的状态记 入ios,若OPEN语句执行正确,则ios=0,若执行有错,ios>0。 ⑨BLANK=blank,blank可取 ‘NULL‟ 或 ‘ZERO‟。当取NULL时, 文件 中 各字段中的空格表示“空”,即没有任何内容, 若取ZERO时, 表示文件中 各 字段中的空格按零处理。 ⑩POSITION=pos,用于设置文件打开后的读写位置。Pos若取‘ASIS‟, 表示读写位置在文件开头,这是缺省值;pos若取“REWIND”,表示把打 开文件的读写位置移到文件开头;pos若取‘APPEND‟,表示将文件读写 位置移到文件尾。
三、文件的输入输出语句 文件的输入输出也就是对文件进行读、写操作。文件的输入 输出使用READ和WRITE语句。由于这两个语句中的各选项 类似,所以放在一起给出它们的一般形式: READ/WRITE([UNIT=]u [, FMT=format][ , NML=namelist] [,REC=rm][ , IOSTAT=ios][ , ERR=label] [ , END=label] [,ADVANCE=adv][ , SIZE=count])ilist/olist 这两个语句的功能分别是从指定文件读取一批数据赋给输入 表ilist中的各元素或将输出表olist指定的一批数据写入文件。 其中各项的含义如下: ①UNIT=u,用于指定文件号,“UNIT=”可省略,当对磁盘 文件读写操作时,该文件号必须是经OPEN语句指定的。 u的使用规则同OPEN语句。 ②FMT=format,用于格式说明,format为格式说明符组成的 格式说明,当其为‘*’号时为表控格式,注意表控格式 不是无格式。 2015-6-11 11
2015-6-11 9
二、CLOSE语句 CLOSE称关闭文件语句,文件使用后应使用该语句关闭 文件,该语句的一般形式是: CLOSE([UNIT=]u [,IOSTAT=ios] [,ERR=label] [,STATUS=sta]) 其中STATUS选项与OPEN语句有所区别,其他各项的作用 与OPEN相同。sta可取‘KEEP‟, 当文件关闭后保留这个文 件, 这是缺省值;还可以取‘DELETE‟, 文件关闭后删除这个文 件. 例如: close(2) 表示关闭2号文件,关闭后文件仍保留。 close(3,err=30,status=‟delete‟) 该语句的作用是关闭 3号文件,关闭后侧除该文件, 如关闭过 2015-6-11 10 程中出现错误,转去执行30号语句。
2015-6-11 12
⑦ERR=label,当读写过程中发生错误时,转去 执行标号为label的语句。 ⑧ADVANCE=adv,仅用于有格式的顺序文件。 adv可取‘YSE‟,表示每执行一次读、写语句后, 自动换到下一行;adv还可以取‘NO‟,每次执行 完读、写语句后不自动进行换行。使用此项一定 要采用“格式说明”说明输入输出格式。 ⑨SIZE=count,当ADVANCE=„NO‟时才使用此项。 count是一个整型变量,使用此项时,将一次输入 输出的数据量,以字节为单位存入count中。 ⑩ilist/olist为输入输出表,其规定同前面各章节使 用的READ或WRITE语句中的输入输出表相同。