matlab读取fortran文件夹,怎样用fortran获取一个文件夹里的全部文件名?
語言自身沒有列舉文件夾的函數功能。
但不少編譯器提供了這樣的擴展,比如 Compaq 和 Intel Visual Fortran 提供的 GetFileInfoQQ 函數。
Subroutine DoWithWildcard(cWildcard,CallBack,iTotal)
Use DFLib,only:GetFileInfoQQ,GetLastErrorQQ,FILE$INFO,FILE$LAST,FILE$ERROR,FILE$FIRST,ERR$NOMEM,ERR$NOENT,FILE$DIR
Implicit None
Interface
Subroutine CallBack( FileName , loop )
Character(*),Intent(In) :: FileName
Integer,Intent(In) :: loop
End Subroutine CallBack
End Interface
Character*(*),Intent(In)::cWildcard
Integer,Intent(Out)::iTotal
TYPE (FILE$INFO) info
INTEGER(4)::Wildhandle,length,retInt
Wildhandle = FILE$FIRST
iTotal = 0
DO WHILE (.TRUE.)
length = GetFileInfoQQ(cWildCard,info,Wildhandle)
IF ((Wildhandle .EQ. FILE$LAST) .OR.(Wildhandle .EQ. FILE$ERROR)) THEN
SELECT CASE (GetLastErrorQQ())
CASE (ERR$NOMEM) !//內存不足
iTotal = - 1
Return
CASE (ERR$NOENT) !//碰到通配符序列尾
Return
CASE DEFAULT
iTotal = 0
Return
END SELECT
END IF
If ((info%permit.AND.FILE$DIR).Eq.0) then
Call CallBack( Trim(info.Name) , iTotal + 1 )
iTotal = iTotal + 1
End If
END DO
End Subroutine DoWithWildcard
!給你一個示范程序:
Program Main
Implicit None
External WriteName
Integer :: n
Call DoWithWildcard( '*.*' , WriteName , n )
If ( N >= 0 ) then
Write(*,*) '共' , N , '個文件!'
End If
End Program Main
!//這個程序需要自己編寫,參數為兩個,第一個參數為文件名,第二個參數為循環量。
Subroutine WriteName( FileName , loop )
Character(*),Intent(In) :: FileName
Integer,Intent(In) :: loop
Write(*,*) loop , FileName
End Subroutine WriteName
取消
評論
總結
以上是生活随笔為你收集整理的matlab读取fortran文件夹,怎样用fortran获取一个文件夹里的全部文件名?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: how to write a php f
- 下一篇: 小爱同学怎么控制家里的电器