Fortran第13章 文件.ppt_第1页
Fortran第13章 文件.ppt_第2页
Fortran第13章 文件.ppt_第3页
Fortran第13章 文件.ppt_第4页
Fortran第13章 文件.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章文件,输入大量数据时,经常以特定格式预编辑数据文件。然后,通过一个程序的文件打开操作和读取语句读取数据文件中的数据。这比从键盘输入效率高得多。此外,从程序输出时,可以将计算结果输出到一个文件中并存档。逻辑设备通过逻辑设备对端口上的文件和外部设备执行操作。在操作文件和外部设备之前,请将其连接到逻辑设备。逻辑设备描述符:内部文件由一个字符变量或另一个变量名称描述。外部文件是文件的说明,使用OPEN语句打开文件时,请使用数字(部件号)或在默认设备部件号中包含星号(*)作为文件的说明。注意:对于设备描述符,不能同时连接多个文件,也不能同时连接多个设备描述符的同一文件。在F90中,可以使用OPEN语句打开已打开的文件,但只能修改此文件的输入输出属性选项,不能执行输入输出操作。根据您正在处理的文件是否在内存中,您可以将文件分为内部文件和外部文件。将外部文件内存中的数据写入磁盘上的文件或输出到其他外部设备(如打印机、显示器和键盘)时,称为外部文件。连接到外部文件的设备说明必须为-32768到32767之间的整数或星号(*)。例如open (unit=10,file= output.dat) write (10,(A)howareyou?在fortran中预定义的4个外部文件(设备):设备编号0、5和6可以通过OPEN语句连接到其他文件,程序关闭设备编号为o、5和6的外部文件,下次在输入和输出操作中使用这些设备编号时,这些设备编号将自动连接到每个基本设备。内部文件内存中的数据也可以像磁盘上的文件一样工作。内存中执行与连接到设备描述符的文件类似的操作的数据称为内部文件。连接到内部文件的设备描述符是字符串或字符数组。使用内部文件的规则如下:只能对内部文件使用格式化的输入输出操作,包括将格式限制为格式描述符和直接列表的输入输出操作。您只能使用READ和WRITE语句操作内部文件,不能使用文件链接(OPEN)、文件指针位置设置(REWIND、BACKSPACE)或文件属性查询(INQUIRE)语句。使用内部文件以及输入和输出系统的格式设置功能,支持外部字符表示法和内存表示法之间的数据转换。也就是说,可以从一个内部文件(从一个变量或数组存储为ASCII,转换为数字、逻辑或字符等内存存储方式),或者将一个变量写入内部文件,从而从内存存储方式转换为ASCII存储方式,等等。在内部文件写入操作中,当记录的内容长度小于内部文件的某个记录的长度时,记录的剩馀空间将填充空格。大于将删除重复数据。读取内部文件时,如果内部文件中的某个记录长度小于要读取的数据长度,则未读取数据的变量将填充空格。大于将删除多馀的内部文件数据。示例:内部文件character(10)str character(14)fname str= 123 read(str,*) n1、N2、n 3 printdat) write (*,10) fname 10 format (1x,a14) end,直接列表READ语句为n1=1、n2=2、n3=3、格式化WRITE语句fname=FM004。DAT、外部文件分类端口栏支持两种文件访问方法(顺序访问和直接访问)和三种文件结构(有格式、无格式、二进制)。对可用于这三种结构的每个文件的顺序访问或直接访问。因此,总共有六种文件类型。格式化文件中记录数据内容的记录以ASCII字符存在,每个记录以ASCII代码中的回车符CR(0D)和换行符LF(0A)结束。OPEN语句的默认打开文件是格式文件,或者可以使用FORM=FORMATTED 设置项目的OPEN语句,以明确文件已格式化。自由形式文件自由形式文件由一系列物理块组成的记录组成。存储的记录序列与存储在内存中的存储非常相似,因此输出时很少需要转换。不能用文本编辑软件打开。在使用自由形式文件之前,必须打开或创建自由形式文件。通过具有设置FORM=UNFORMATTED 的OPEN语句打开或创建文件,或使用省略FORM选项的OPEN语句直接访问或打开自由形式文件。二进制文件二进制文件是处理最快、最精简的文件类型,是最紧凑的存储格式,适用于大容量数据存储。程序可以使用带有选项FORM=BINARY 的OPEN语句打开或创建二进制文件。顺序访问文件存储在顺序文件中的数据必须按顺序访问,一个记录。也就是说,要使程序读取和写入第N条记录,至少必须对以前的N-1记录执行读取操作。内部文件必须使用顺序文件。顺序访问的外部设备(如键盘、显示器和打印机)必须连接到顺序文件。OPEN语句的默认打开文件是顺序文件,或者可以使用ACCESS=SEQUENTIAL 设置条目的OPEN语句,以明确文件是顺序文件。在输出顺序文件时,始终将OPEN语句后WRITE语句输出的记录作为文件的开头,将当前WRITE语句输出的记录始终作为文件的最后一条记录。如果创建的顺序文件已存在,则文件的所有原始内容都将丢失。直接访问文件存储在直接访问文件中的记录可以按任意顺序读取和写入。文件中的记录从1开始按顺序编号,记录的长度通过OPEN语句中的RECL选项说明。直接文件中的记录通过指定要访问的记录号来完成。程序可以使用带有设置ACCESS=DIRECT 的项目的OPEN语句直接打开或创建文件。直接文件中每个记录的长度必须相同。如果实际输出的记录长度不相等,则应使用所有输出记录中最大的长度作为每个记录的长度。如果使用一个旧文件,则OPEN语句中描述的记录长度必须与实际记录长度匹配。特别要注意占用一个字节的尾部空格。回车符换行不包括在记录长度中。您可以按顺序打开自己创建的文件以进行读取操作。只要记录长度相同,按顺序创建的文档也可以直接打开以供读取操作。文档历史记录的访问格式化顺序文档格式化文档由按顺序写入到文档中的格式化记录序列组成,读取文档时的读取顺序是写入到文档中的顺序。文件中的记录不一定具有相同的长度,记录也可以为空。记录由回车(0DH)和换行符(0AH)分隔。示例:OPEN(3,FILE=FSEQ )!fseqisaformattenualpifebydefault . write(3,(a,i3) record ,1 write (3,()write记录的长度由OPEN语句中的RECL=选项指定,该选项大于或等于最长记录的字节数。CR和LF是分隔符,不包含在RECL中。一旦记录了直接访问记录,就不能再删除它,但可以复盖此记录。当直接输出到格式化文件时,如果数据未充满一条记录,编译系统将在其馀位置填充空格,以确保文件仅包含具有相同长度的完整记录。从文件读取数据时,如果I/o列表或格式描述符读取的数据比记录中的数据多,则编译器还会用空格填充未读取数据的变量。在打开文件的OPEN语句中设置PAD=NO可以防止填充空格。输入记录必须包含输入列表和格式描述符所需的任意数量的数据。否则,将出现错误。pad=no对输出没有影响。示例:open (3,file= fdir ,form= formatted ,access= direct ,recl=10) write每个物理块包含在文件中输入的数据(最多128字节),编译系统在物理块之间添加两个单字节长度值,以说明每个记录的开始和结束。一条逻辑记录包含一个或多个物理块,其大小可以由程序指定,编译系统将相应地使用所需数量的物理块。在创建包含多个物理块的逻辑记录时,编译系统将长度值设置为129,以指示当前物理块中的数据与下一个物理块相关联。例如,非格式顺序文件的第一个字节和最后一个字节是保留字节。第一个字节的值为75,最后一个字节的值为130。fortran使用这些字节作为错误检测和文件终止的判断。例如:character XYZ(3)integer(4)idata(35)data idatta/35 *-1/,XYZ/x , y 否则,文件结构将不同。无格式的直接文件格式的直接文件是一系列记录,而不是可以任意顺序读取和写入记录的格式。记录的长度全部相同,由OPEN语句中的RECL=选项指定。没有表示字节分隔符或记录结构的其他字节。例如:open (3,file= udir ,recl=10,form= unformatted ,access= direct) writetrue。 abcdef write (3,rec=1) 2049close (3) end,二进制顺序文件二进制顺序文件是按相同顺序读取和写入的一系列值。它没有记录边界,也没有描述文件结构的特殊字节。读取和写入数据时,长度和格式保持不变。数据记录的长度可以不同。对于所有输入和输出数据,内存中的字节序列是文件中的字节序列。二进制顺序文件是以最快的速度处理的文件。例如integer(4)bells(4)character(4)wyss(3)、cvardatbels/4 * 7/、CVaR/isWrite (3) bells close (3) end,二进制直接文件二进制直接文件存储一系列二进制记录,可以按任意顺序访问。与二进制顺序文件不同,这些记录的长度相同,并由OPEN语句中的RECL=选项指定。可以从二进制直接文件中写入某些记录,记录末尾使用的部分将填充未定义的数据。在二进制直接文件中,仅使用一个读或写语句读取和写入两个或多个记录,这将导致在没有格式的直接文件中出错。可以在自由形式直接文件中执行的所有操作在二进制直接文件中是合法的,具有读取和写入记录的一部分的功能,而不依赖于在二进制直接文件中填充二进制数据o。二进制直接文件是所有类6文件中最灵活的类。,示例:OPEN (3,file= bdir ,recl=10,form= binary ,access= direct) write()常见的形式是OPEN(olist),olist,olist包含以下17个说明符:unit=unit access=accessaction=action blank=blanks block size=block size errcarriage control=carriagecontrolders其中,每个参数的含义和值如下:UNIT=unit设备编号说明。Unit是大于或等于0的正整数,设备编号说明是OPEN语句中的第一个条目时,可以省略“UNIT=”。2)ACCESS=access访问方法说明。Access是字符串表达式。APPEND添加方法SEQUENTIAL顺序访问方法DIRECT直接访问方法如果忽略此说明条目,则为顺序访问方法。3)FILE=file文件名。File是字符串表达式,可以是空的或有效的数据文件名、设备名称或内部文件的变量。WinNT/9x接受长度大于8的文件名和长度大于3的文件扩展名。如果忽略此项目,编译器会自动生成文件名唯一的临时文件。此临时文件在退出运行或退出连接到文件的设备后被删除。4)FORM=form记录格式说明。Form是字符串表达式。FORMATTED记录以格式化格式存储。UNFORMATTED记录以自由形式存储。如果忽略此说明条目,顺序文件将格式化。直接文件没有格式。5)ACTION=action说明文件的读写属性。Action是字符串表达式。READ文件为只读打开WRITE文件以只读方式打开READWRITE文件以读/写方式打开如果省略此说明条

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论