之前写程序的时候,我们经常会使用read和write命令,这俩是最简单的io流命令,但是他们是有问题的,因为他们在读取之后,数据不能长期保存,这是个很恶心的问题,所以这个时候就需要文件来帮忙了。

Fortran读取文件有两种方式,一个是顺序读取,另一个是直接读取,把顺序读取想象成磁带的读取就行,只能从头到尾,直接读取则是在读写文件的时候,可以跳跃到任意位置来进行读写。

保存文件也有两种,很简单,保存为文本文件以及保存为二进制文件,大概就是这么多,下面就开始命令学习吧。

1、open命令,这个命令就是打开文件

open(unit=iounit, file=name,form=formatted iostat=ios, &status="old/new/replace/scratch/unknown", action="read/write/readwrite", access="sequential/direct"sequential/direct)
if ( ios /= 0 ) stop "Error opening file name"

UNIT必须是正整数,尽量要避免1、2、5、6,因为2、6是默认输入的位置(屏幕),1、5是默认输入的位置(键盘)。

form有两种,一种是formatted,另一种是unformatted,前者是用文本文件形式来保存,后者则用二进制文件格式来保存

status="old/new/replace/scratch/unknown"

其中,new表示这个文件原本不存在。是第一次打开

old表示这个文件原本就存在

replace表示如果文件以及存在,会覆盖掉之前的内容,如果文件不存在,就会生成一个新文件

scratc表示带开一个暂存盘,现在不需要指定文件名称,程序会主动去取一个文件名,文件名是什么也不重要,暂存盘会在程序结束后自动删除

unknow表示这个由编译器直接决定,通常会是replace的效果。

access="sequential/direct"

sequential是顺序读写,direct是直接读写,

recl=length

表示一次可以读出length长的数据

Err=label:文件打开发生错误是,程序会跳跃到label所指的位置继续执行

iostat:

<0 文件终止
>0 读取出现错误
=0 操作正常

blank:空格存在时所代表的意义

NULL 空格表示没东西
ZERO 空格会自动以0代入

position:

asis 表示文件打开时的读取位置,缺省值是文件开头
rewind 表示文件打开时的读取位置移到文件开头
append 表示文件打开时的读取位置移到文件结尾

、pad:

yes 格式化输入时,最前面的不足字段会以空格填满,yes是缺省值
no 格式化输入时,不足的字段不会自动以空格填满

delim:

none 输出纯字符
quote 字符串会加上双引号
apostrophe 字符串会加上单引号

举一个例子:

unit实际上是给后面的文件给一个代号,可以看到write(10,*)中的10 就对应着在这个文件里写入

program main
implicit none
integer :: i
open(unit=10,file='hello.txt')
do i=1,10
write(10,*)'Hello word!'
end do
stop
end

现在来仔细的聊一聊write和read吧:

read/write(unit=iounit, fmt="(format string)", iostat=ios, advance='NO') variables
if ( ios /= 0 ) stop "Write error in file unit iounit"

rec=record:直接读取文件的时候设置所要读写的文件模块位置

iostat:

<0 文件终止
>0 读取出现错误
=0 操作正常

err=errlabel:指定读写错误的时候,会转移到的代码位置

end=endlabel:读写到文件末尾时,要转移到某行代码处来继续执行

advance:

yes 缺省值,每读写一次会向下移动一行
no 暂停自动换行的操作

size:size=count:只有advance=no时,才可以使用这个字段,会把这一次输出输入的字符数目设置给后面的整性变量

查询文件状态要用inquire命令:

inquire(file=filename, opened=ioopen, exists=ioexist, number=iounit)

opened=ioopen:是否打开

exists=ioexist:是否存在

number=iounit:所要查询的文件代号

还有很多的命令,可以多看看书

backspace(unit=number,err=errlabel,iostst=iostat)
//!文件读写位置回退
endfile(unit=number,err=errlabel,iostst=iostat)
//!吧目前文件的读写位置变成文件的结尾
rewind(unit=number,err=errlabel,iostst=iostat)
//!把文件读写位置倒回文件开头
close(unit=number,status=string,err=errlabel,iostst=iostat)
//!关闭文件

跟着书上试一下:

caution:刚刚才发现,上面的exists改成了exist

program mainimplicit noneinteger,PARAMETER::fileid=10LOGICAL aliveCHARACTER(len=20)::filenameWRITE(*,*)'filname:'read(*,"(A20)")filenameinquire(file=filename,exist=alive)if(alive)thenopen(unit=fileid,file=filename)close(fileid,status='DELETE')elsewrite(*,*)TRIM(filename),"doesn't exist"//!TRIM函数用来删除字符串后面的多余空格end if
stop "over"
end
//!如果文件存在就把他删除,不存在就报错
//!怎么删除的嘞?看没看到close里的status=‘DELETE’

刚开始把文件名写错了,我说怎么helloword.txt不存在,结果写成了hellowrd.txt。。。

ok,今天就到这里吧,简简单单的先学习一下基础,毕竟万丈高楼平地起嘛,明天没有看,开始学习对顺序文件的操作。

Fortran学习12:IO 1相关推荐

  1. 树莓派4B学习笔记——IO通信篇(UART)

    文章目录 UART简介 树莓派使用UART与串口屏通信 串口屏简介 硬件连接 配置串口接口 树莓派打开UART接口 树莓派安装串口调试助手 编程实现 wiringSerial.h Serial简介 C ...

  2. Java学习-07 IO学习

    Java学习-07 IO学习 I : 即input,代表读取.O:即output,代表输出. 1.File 主要字段: 示例: System.out.println(File.pathSeparato ...

  3. ThinkPhp学习12

    原文:ThinkPhp学习12 二.输出模板内容      (重点) a.display 1.display中没有参数    $this->display(); 2.可以带参数    $this ...

  4. Fortran学习杂记(一)

    Fortran学习杂记(一) 1. 内置函数 1) 数值运算 常见:- abs( ) - aimag( ) -conj( ) -max( ) ** -min( ) - mod(a, b) - real ...

  5. linux学习软件有哪些,Linux学习12个有效果软件!看看哪些你用得上

    原标题:Linux学习12个有效果软件!看看哪些你用得上 不管是Linux入门学习还是已经在从事Linux开发工作的人,都需要学习和掌握一些Linux开发工具和软件,那么现在已经主流实用的Linux软 ...

  6. 算法学习12: 单调队列和单调栈

    算法学习12: 单调队列和单调栈 单调队列 单调队列解决的问题: 窗口内最大/最小值的更新结构 单调队列的结构和操作 单调队列的应用 题目一: 生成窗口最大值数组[leetcode 239](http ...

  7. Fortran学习13:IO 2

    对顺序文件的操作:顺序文件在读写的时候,不能任意的赋值道文件的某个卫视读写数据,只能从头开始一步步进行,改变我觉得写位置的时候,只能一步步的进退,或者直接移动回到文件开头. 简单的跟着书上的练一个: ...

  8. Golang学习(12)——regex包

    Golang学习 - regexp 包 ------------------------ // 函数 // 判断在 b(s.r)中能否找到 pattern 所匹配的字符串 func Match(pat ...

  9. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

最新文章

  1. 软件使用 excel
  2. 云监控Agent指南-Linux版
  3. redis 判断存在性_实战 | springboot+redis+拦截器 实现接口幂等性校验
  4. 利用proc 实现内核和用户态交换数据
  5. percona-toolkit 之 【pt-table-checksum】、【pt-table-sync】说明
  6. PHP从零开始--字段修饰符数据操作SQL语言
  7. sql2000导出mysql_如何将sql2000的数据库导入到mysql中?
  8. qq浏览器怎么导入其他浏览器收藏夹
  9. 小白猿简洁好看的个人介绍单页HTML5源码
  10. (1)win10 64位系统ISE14.7闪退问题(FPGA不积跬步101)
  11. 服务器性能低下时正确的处理方法
  12. ddr4单颗粒最大_国产内存来了:长鑫发布DDR4/LPDDR4X内存
  13. 美通企业日报 | 易车收到腾讯等私有化要约;沃尔玛中国推出快时尚品牌George...
  14. linux下云翔php,《云翔曲谱》目录
  15. Task02:学习笔记文本预处理;语言模型;循环神经网络基础
  16. python想要保存QQ邮箱富途的附件
  17. indesign中调出字符样式快捷键_InDesign快捷键大全 InDesign常用快捷键分享
  18. 传电子书到kindle_如何将电子书和其他文档发送到Kindle
  19. IE和FireFox的Javascript的事件和事件处理总结
  20. python plt.subplot_Python Matplotlib subplot函数详解:创建子图

热门文章

  1. css3 画动态微笑猫的最佳实践
  2. Java合并PDF文件的几种方法
  3. 多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序
  4. python写酒店管理系统_基于C# Winform的酒店管理系统
  5. 网站被恶意镜像怎么办?
  6. 沃通的证书受到质疑,StartCom CA 受处罚
  7. 固态继电器与普通继电器的区别
  8. 销售AI-SaaS解决方案提供商领鸟云宣布完成鲲腾资本领投的新一轮融资
  9. a-frame_使用A-Frame,PubNub和WebVR构建基于浏览器的多人VR游戏
  10. php左键点改成左键点,window_win10怎么将鼠标左键设置为主键?win10鼠标左右键互换的技巧,当我们的鼠标使用一段时间之 - phpStudy...