回 帖 发 新 帖 刷新版面

主题:臭石头雪球 怎样判断路径是否存在

用户从键盘输入的路径,由于可能误输入,可能该路径并不存在,应该用什么函数来判断路径的有效性?在fortran 自带的 procedure中也没有找到,
再次感谢

回复列表 (共9个回复)

沙发

inquire(file='...', exist=alive),检查 alive 返回值。

板凳

这问题确实不难。。。
建议最好是不要指定某人来回答——影响群众积极性啊:)

3 楼

这是楼主的权利,当然也是对众生的不信任;我等沉默便是了。

4 楼


呵呵,抱歉,因为有个类似的臭石头雪球回答过,所以我就势就问了,抱歉,没有对各位不信任的意思。
楼上解答的是针对文件是否存在,我想问的是如何判断目录是否存在,因为首先目录存在了,我再进一步考虑去读目录下的文件。

但是如何判断用户输入的目录是否存在呢?

再次向我指定回答者带了的不便表示歉意,

5 楼

mingw 编译的 gfrotran 4.5 和 CVF 6.6 使用 inquire 测试目录通过。

IVF 有人报把 文件 和 目录 分别对待的。

还与操作系统相关。

6 楼


谢谢您的多次解答,但是我在cvf的help只是看到了inquire是判断unit或者文件是否存在的。没有对路径的应用。

7 楼

IVF 编译器确实不把文件夹当做文件对象。

对于 IVF,可以使用以下这个函数:

Program S
  Logical IsFileExist
  Write(*,*) IsFileExist( "C:\ntldrs" )
End

Logical Function IsFileExist( cDirectory )
  Use Kernel32
  Implicit None
  Character( Len = * ) ,Intent( IN ):: cDirectory
  TYPE (T_WIN32_FIND_DATA) lpFindFileData
  Integer :: iRes
  iRes = FindFirstFile( cDirectory , lpFindFileData )
  If ( iRes == INVALID_HANDLE_VALUE ) then
    IsFileExist = .FALSE.
  Else
    iRes = FindClose( iRes )
    IsFileExist = .TRUE.
  EndIf  
End Function IsFileExist

8 楼

呵呵,俺也来一个吧,比较简单的:)
[code=c]
Logical Function IsDirectoryExists(strDir)
    Use Kernel32

    Character(*)    strDir
    Integer*4        FileAttr

    FileAttr=GetFileAttributes(strDir)
    IsDirectoryExists=FileAttr.NE.-1.And.BTest(FileAttr,4)
End Function
[/code]

9 楼


使用INQUIRE (DIRECTORY=dir, EXIST=ex [, DIRSPEC=dirspec] [, ERR=label] [, IOSTAT=i-var])可以查询目标文件夹的存在性

我来回复

您尚未登录,请登录后再回复。点此登录或注册