主题:臭石头雪球 怎样判断路径是否存在
krmy
[专家分:0] 发布于 2009-09-17 09:22:00
用户从键盘输入的路径,由于可能误输入,可能该路径并不存在,应该用什么函数来判断路径的有效性?在fortran 自带的 procedure中也没有找到,
再次感谢
回复列表 (共9个回复)
沙发
helo_aBiNg [专家分:480] 发布于 2009-09-17 09:29:00
inquire(file='...', exist=alive),检查 alive 返回值。
板凳
cgl_lgs [专家分:21040] 发布于 2009-09-17 23:34:00
这问题确实不难。。。
建议最好是不要指定某人来回答——影响群众积极性啊:)
3 楼
asymptotic [专家分:16630] 发布于 2009-09-18 08:05:00
这是楼主的权利,当然也是对众生的不信任;我等沉默便是了。
4 楼
krmy [专家分:0] 发布于 2009-09-19 16:05:00
呵呵,抱歉,因为有个类似的臭石头雪球回答过,所以我就势就问了,抱歉,没有对各位不信任的意思。
楼上解答的是针对文件是否存在,我想问的是如何判断目录是否存在,因为首先目录存在了,我再进一步考虑去读目录下的文件。
但是如何判断用户输入的目录是否存在呢?
再次向我指定回答者带了的不便表示歉意,
5 楼
helo_aBiNg [专家分:480] 发布于 2009-09-19 19:32:00
mingw 编译的 gfrotran 4.5 和 CVF 6.6 使用 inquire 测试目录通过。
IVF 有人报把 文件 和 目录 分别对待的。
还与操作系统相关。
6 楼
krmy [专家分:0] 发布于 2009-09-20 16:25:00
谢谢您的多次解答,但是我在cvf的help只是看到了inquire是判断unit或者文件是否存在的。没有对路径的应用。
7 楼
臭石头雪球 [专家分:23030] 发布于 2009-09-20 20:35:00
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 楼
cgl_lgs [专家分:21040] 发布于 2009-09-20 21:26:00
呵呵,俺也来一个吧,比较简单的:)
[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 楼
ljbnudt [专家分:0] 发布于 2010-05-21 21:38:00
使用INQUIRE (DIRECTORY=dir, EXIST=ex [, DIRSPEC=dirspec] [, ERR=label] [, IOSTAT=i-var])可以查询目标文件夹的存在性
我来回复