快速怀疑,我需要从一个文件夹中读取所有文件,但我不知道有多少文件。
我知道如何打开它们,只是不知道何时停止,即当所有文件都被读取时。
如果你有一定的规则来生成文件名(如mydata001.dat、mydata002.dat等),那么你可以在每次生成文件名时,用inquire
语句检查文件是否存在。第一次不存在,可以停止。下面的程序演示了:
program proba
implicit none
character(len=20) :: buffer
logical :: exist
integer :: ind
ind = 1
fileloop: do
write(buffer,"(A,I3.3,A)") "mydata", ind, ".dat"
inquire(file=buffer, exist=exist)
if (.not. exist) then
write(*,*) "File '", trim(buffer), "' not found, exiting loop"
exit
end if
write(*,*) "File: '", trim(buffer), "' found."
ind = ind + 1
end do fileloop
end program proba
或者,如果无法根据规则生成文件名,您可以使用一些能够获取目录中文件列表的库。一种可能是我的modFileSys库,您可以通过以下方式对任意目录内容执行此操作:
program test_ls
use filesys_module
type(dirdesc) :: dir
character(:), allocatable :: path
call opendir("./", dir)
path = dir%next_filename()
do while (len(path) > 0)
write(*, "(A)") path
path = dir%next_filename()
end do
end program test_ls