【问题标题】:Listing the contents of a directory in Fortran [closed]在 Fortran 中列出目录的内容 [关闭]
【发布时间】:2012-01-17 10:06:17
【问题描述】:

如何在 Fortran 95 中获取目录的内容?

【问题讨论】:

  • 你是什么意思“我必须填充它,否则它不会通过”。你试过什么了。将目录的内容打印到屏幕上是否足够,还是需要将文件列表存储在变量中?
  • @Chris :我指的是问题本身,太短以至于无法被 SO 接受。

标签: fortran fortran95


【解决方案1】:

如果我们在“inFiles”文件夹中有所有文件,我们首先找出有多少,然后我们将它们的名称读入一个数组,检查一下:

  real :: r
  integer :: i,reason,NstationFiles,iStation
  character(LEN=100), dimension(:), allocatable :: stationFileNames

  ! get the files
  call system('ls ./inFiles > fileContents.txt')
  open(31,FILE='fileContents.txt',action="read")
  !how many
  i = 0
  do
   read(31,FMT='(a)',iostat=reason) r
   if (reason/=0) EXIT
   i = i+1
  end do
  NstationFiles = i
  write(verb,'(a,I0)') "Number of station files: " , NstationFiles
  allocate(stationFileNames(NstationFiles))
  rewind(31)
  do i = 1,NstationFiles
   read(31,'(a)') stationFileNames(i)

!写(动词,'(a)')修剪(stationFileNames(i)) 结束做 关闭(31)

【讨论】:

    【解决方案2】:

    要学究气,你不会。 Fortran 95 中没有内在的或类似的东西可以帮助你。

    在 POSIX 系统和最近的 Fortran 编译器上,您可以使用 ISO_C_BINDING 创建 POSIX opendir() 和 readdir() 函数(或 readdir_r(),如果您需要线程安全)的接口,这允许您迭代目录条目。

    【讨论】:

    • 这种语言是否允许做任何有用的事情,除了乘以数字吗?
    • 作为比较,您能指出在 C 或 C++ 标准中的什么地方可以找到列出目录内容的功能吗?
    • 人们会期望针对这种微不足道的操作的标准库对于这种时代的语言来说是开箱即用的。
    【解决方案3】:

    因此,Fortran 中没有目录的概念。它读取文件。 (有些处理器甚至没有目录的概念)。

    话虽如此,最简单的方法是使用 SYSTEM。之后取决于你想要什么......

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 2019-02-27
      • 2013-12-07
      • 2011-06-10
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      相关资源
      最近更新 更多