FORTRAN 90如何查找文件夹中的文件数

时间:2013-04-03 12:24:26

标签: file fortran directory fortran90

快速怀疑,我需要读取文件夹中的所有文件,但我不知道有多少文件。

我知道如何打开它们,只是不知道何时停止,即何时读取所有文件。

1 个答案:

答案 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