首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试目录是否存在

测试目录是否存在
EN

Stack Overflow用户
提问于 2012-03-01 19:48:49
回答 6查看 15.8K关注 0票数 8

我正在尝试使用Fortan90验证一个目录是否存在。我在不同的网站上发现:

代码语言:javascript
复制
logical :: dir_e
inquire(file='./docs/.', exist=dir_e)

if ( dir_e ) then
  write(*,*) "dir exists!"
else
  ! workaround: it calls an extern program...
  call system('mkdir docs')
end if

但是,无论目录是否存在,inquire都会返回False,如果我执行该代码两次,则会得到一条错误消息。

无法生成dir,文件已经存在。

如果我用:

代码语言:javascript
复制
inquire(file='./docs/test', exist=dir_e)

使用现有的文件测试,inquire返回true

如何检查目录的存在?我使用的是ubuntu11.04和ifort编译器。

EN

Stack Overflow用户

发布于 2014-07-10 02:54:45

下面是我经常使用的一个子例程--它使用您询问的条件:

代码语言:javascript
复制
subroutine create_directory( newDirPath )
    ! Author:  Jess Vriesema
    ! Date:    Spring 2011
    ! Purpose: Creates a directory at ./newDirPath

    implicit none

    character(len=*), intent(in) :: newDirPath
    character(len=256)           :: mkdirCmd
    logical                      :: dirExists

    ! Check if the directory exists first
!   inquire( file=trim(newDirPath)//'/.', exist=dirExists )  ! Works with gfortran, but not ifort
    inquire( directory=newDirPath, exist=dirExists )         ! Works with ifort, but not gfortran


    if (dirExists) then
!      write (*,*) "Directory already exists: '"//trim(newDirPath)//"'"
    else
        mkdirCmd = 'mkdir -p '//trim(newDirPath)
        write(*,'(a)') "Creating new directory: '"//trim(mkdirCmd)//"'"
        call system( mkdirCmd )
    endif
end subroutine create_directory

根据您使用的编译器,您必须决定哪些条件适合您。

不幸的是,我无法访问nagfor,也不知道它是如何对待目录的。

票数 2
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9522933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档