快速怀疑,我需要读取文件夹中的所有文件,但我不知道有多少文件。
我知道如何打开它们,只是不知道何时停止,即何时读取所有文件。
答案 0 :(得分:3)
如果您有一定的规则来生成文件名(例如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