大概有两种方式:
1.把文件名们存在一个txt文件里,然后用字符数组读入,然后调用。(这种方法适用于数据文件的文件名不固定或者没有规律的时候)。需要在DOS窗口下运行:dir 文件名/s/b>>生成文件
示例: dir D:\file1/s/b>>D:\tltle.txt
2.在fortran里找到 转换数字为字符 的函数,然后调用。
eg:假如你有一组文件有20个,命名规律是myFile*.dat,其中*是从1到20递增的整型数,则要用循环依次打开这些文件可以这样写:
program main
implicit none
character( len = 2 ) :: cTemp
integer :: k
do k = 1, 20
write( cTemp,'(i2)' ) k
open ( 1, file = 'myFile' // trim(adjustl( cTemp )) //'.dat', status = 'old' )
...
close( 1 )
end do
end porgram main
这里因为k可能是一位数,也可能是两位数,所以字符串变量cTemp的长度至少要是2个字符长度,才能保证最大整数能装下。trim和adjustl是FORTRAN的标准内部函数。adjustl的作用是将字符串里的内容左对齐,空格置于右端。trim的作用是将字符串末尾(即右端)的空格删掉。这样无论你的k是一位数还是两位数,都可以保证open路径中不会出现多余的空格。// 是FORTRAN的字符串操作符,作用是将字符串连接起来。同理,如果是字符型数字转整型或实型,方法一样,比如:
character( len = 4 ) :: cTemp = '2007'
integer :: year
read( cTemp, '(i4)' ) :: year
援引:http://hi.baidu.com/krcat/item/488a3e7e7866b2336e29f6cf。在此向作者表示感谢,分享供大家参考。
补:受第二种方法的启发,本人在编程中经常用到第三种方法,如下:
!比如文件名从001到120
CHARACTER (40) CH
……
DO J=1,120,1
WRITE(CH,'(A25,I3.3,A4)')'D:\Tuesday\Visib_13years\',J,'.txt' ! 格式中I3.3主要是在前面补零,补够3位
OPEN (J,FILE=TRIM(CH))
……
这些方法各有不同,也各有相似之处,目的一致,供大家参考