首页 > 代码 > 常规代码 > 正文

代码

阅读排行

文件夹内循环读取文件[仅适用于VF编译器]
2014-01-20 17:50:31   来源:Fcode研讨团队   评论:0 点击:

本例可用于在同一个文件夹下,对文件名符合一定要求的文件进行循环。使用了VF(IVF,CVF,DVF)所扩展的函数,请确认您的编译器允许。

本例代码如下,将所有 C 盘下的文件输出,如果你懂得 windows通配符,那么使用这个代码会更得心应手,否则,您可能需要先了解一下它,效果如图:

\


01Program www_fcode_cn
02   Implicit None
03   integer :: n
04   External ToDoOneFile
05   call DoWithWildcard( "C:\*.*" , ToDoOneFile , n )
06   write(*,*) '共',n,'个文件'
07End Program www_fcode_cn
08 
09Subroutine ToDoOneFile( cFile , iLoop )
10   Character( Len = * ) , Intent( IN ) :: cFile
11   Integer , Intent( IN ) :: iLoop
12   Write( * , * ) '第',iLoop,'个文件:',cFile
13   !Open( 12 , File = cFile )
14   !Read( 12 )
15   !Close( 12 )
16End Subroutine ToDoOneFile
17 
18    
19Subroutine DoWithWildcard(cWildcard,CallBack,iTotal)
20   !// 下一句代码,如果是 Compaq 或 Digital,需改为 Use DFLib
21   Use IFPort , only : GetFileInfoQQ , GetLastErrorQQ , FILE$INFO , FILE$LAST , FILE$ERROR , FILE$FIRST , ERR$NOMEM , ERR$NOENT , FILE$DIR
22   Implicit None
23   Interface
24     Subroutine CallBack( cFile , iLoop )
25       Character( Len = * ) , Intent( IN ) :: cFile
26       Integer , Intent( IN ) :: iLoop
27     End Subroutine CallBack
28   End Interface
29   Character( Len = * ) , Intent( IN ) :: cWildcard
30   Integer , Intent( OUT ) :: iTotal
31   Type (FILE$INFO) :: stInfo
32   Integer(KIND=INT_PTR_KIND( )) iWildhandle
33   Integer(4) :: iLength , iRet
34   iWildhandle = FILE$FIRST
35   iTotal = 0
36   Do While (.TRUE.)
37       iLength = GetFileInfoQQ( cWildCard , stInfo , iWildhandle )
38       If (( iWildhandle == FILE$LAST) .OR.( iWildhandle == FILE$ERROR )) then
39         Select Case (GetLastErrorQQ())
40         Case (ERR$NOMEM)  !//内存不足
41           iTotal = - 1
42           return
43         Case (ERR$NOENT)  !//碰到通配符序列尾
44           return
45         Case Default
46           iTotal = 0
47           return
48         End Select
49       End If
50       If ( ( stInfo%permit.AND.FILE$DIR ) == 0 ) then
51         call CallBack( Trim(stInfo%Name) , iTotal + 1 )
52         iTotal = iTotal + 1
53       End If
54   End Do
55 End Subroutine DoWithWildcard

相关热词搜索:文件夹 循环 读取文件

上一篇:为整数添加千分位符号函数
下一篇:MD5 哈希值计算程序

分享到:           收藏