Fortran进行批处理地方法
fortran 排除错误

安装好VISUAL FORTRAN后1、运行Developer studio即可开始编译FORTRAN程序2、选择File菜单中的New选项3、在弹出的对话框选择projects标签,其他标签不用管,projects格式选用Fortran console application;在project name里命名(最好英文名),点击“ok ”4、接下来画面中,选择“an empty project”,点击“finish”5、接下来画面点击“ok”6、再选择一次File菜单中的new7、对话框选用files标签,选择Fortran free format source file ,并在file里命名8、点击“ok”Source Files 放源文件(.c、.cpp)程序的实现代码全放在这里Header Files 放头文件(.h)声明放在这里Resource Files 资源文件(.rc)放图标、图片、菜单、文字之类的,主要用来做界面的东东一般都放这里External Dependencies 除上三种以外的,程序编译时用到的文件全放这里fortran内部函数出错信息解释内部函数出错信息解释[sourcefile(line)]run-time error M62××MATH错误号函数级数学错误信息M6201 functionnames:DOMAIN error函数的自变量超出了约定的取值域,例如sqrt(-1)M6202 functionname:SING error无意义的变量。
例如log10(0)M6203 functionname:OVERFLOW error函数的结果值或其中一个既时计算值太大以致不能表示,例如EXP(250000.0) M6204 functionname:UNDERFLOW error函数的结果值或其中一个既时计算值太小以致不能表示。
M6205 functionname:TLOSS error完全丢失精度,例如COS(1E30)M6206 functionname:PLOSS errorfortran debug模式设置和技巧CVF中有两种编译(连接、执行)模式:release模式和debug模式。
6 Fortran 程序设计6-文件

6 Fortran 程序设计6-文件6 Fortran 程序设计-文件6.1 引言本章将介绍如何在Fortran程序中处理文件输入和输出。
文件输入和输出是Fortran程序中常见的操作,可以用于读取外部数据、将结果写入文件等。
本章将介绍如何打开、关闭、读取和写入文件,并提供一些常用的文件操作示例。
6.2 文件的打开和关闭在Fortran中,可以使用OPEN语句打开一个文件,使用CLOSE语句关闭一个文件。
打开文件时,需要指定文件名、打开模式和文件单元号。
关闭文件时,只需要指定文件单元号即可。
6.2.1 打开文件打开文件的语法如下:OPEN(unit=, , status=status, iostat=iostat)其中,unit是文件单元号,file是文件名,status是文件的打开模式,iostat是一个可选的参数,用于返回执行结果。
status的取值有以下几种:- 'OLD':打开一个已存在的文件,该文件必须已经存在,否则会报错。
- 'NEW':创建一个新文件,如果文件已存在,则会清空文件内容。
- 'UNKNOWN':打开一个已存在的文件,如果文件不存在,则会创建一个新文件。
- 'REPLACE':创建一个新文件,如果文件已存在,则会替换原文件。
打开文件成功后,文件单元号将被用于后续的文件操作。
6.2.2 关闭文件关闭文件的语法如下:CLOSE(unit=, status=status, iostat=iostat)其中,unit是文件单元号,status是一个可选的参数,用于指定关闭文件时的操作。
status的取值有以下几种:- 'KEEP':保留文件,不清空文件内容。
- 'DELETE':删除文件。
文件关闭成功后,文件单元号将无法再用于文件操作。
6.3 文件的读取和写入在Fortran中,可以使用READ和WRITE语句进行文件的读取和写入操作。
Fortran进行批处理地方法

Fortran进行批处理地方法Fortran中批量处理文件的方法总结—循环读取目录下的所有符合条件的文件=====================一、简单的介绍在一年之前,我写过一个程序,主要是对Micaps资料进行批量处理,将逐日资料处理为旬、月的数据,在那个程序中,始终有一个问题困扰我,就是如何自动生成该读取的下一个文件名,这使我真正开始关注fortran中的批处理,时隔一年,决定写下这些文字,将我用到的一些fortran批处理的方法和大家共享,交流。
对于那些只要会用程序,不求其中原理的朋友,请马上跳过这些文字,直接去下载附件吧!程序里有使用说明,但是,如果你不懂原理,估计现成的程序你使用起来也会碰壁哦!这里所说的批处理是指对某一个目录下的指定后缀的文件的批量读取和处理。
我总结的批处理方法大概可以用下面这个示意图来说明:|||将文件目录写入一个文本文件,供fortran循环读取|————手动输入文件名|————运行程序之前命令行工具导出文件名|————程序运行后,未开始计算之前,生成文件名| ————调用CMD命令生成| ————GETFILEINFOQQ方法生成| ————调用WIN32API生成||在程序运行时动态生成文件名||对于第一种方法,我将主要介绍如何将目录写入文件,然后举出一个小的示例来验证。
第二种方法主要是说明其思路。
二、方法的介绍1、将文件目录写入一个文本文件,供fortran循环读取1.1、手动输入文件名这是最基本的方法啦,如果文件个数不多,而且文件名中包含了空格等特殊字符的话,建议使用这种方法,在这里就不多说啦,至于在fortran中的处理,等几个小方法介绍完之后会有一个例子来说明。
1.2、运行程序之前命令行工具导出文件名这是一个既高效又保险的方法,主要思路就是通过强大的CMD命令列出目录下的文件到一个指定的文件中,然后由fortran去循环读取该文件中的文件名信息,从而批量处理。
fortran循环结构及基本语句

fortran循环结构及基本语句Fortran中的循环结构包括DO循环和DO WHILE循环。
基本语句包括赋值语句、条件语句和IO语句。
1.DO循环结构:DO循环结构用于重复执行一段代码块,语法如下:DO variable = start, end, step!代码块ENDDO在循环开始前,将变量初始化为start的值,然后执行代码块。
然后将变量增加step的值,并检查是否达到end的值,如果没有达到则继续执行代码块,直到达到end的值为止。
2.DOWHILE循环结构:DOWHILE循环结构用于在满足条件时重复执行一段代码块,语法如下:DO WHILE (condition)!代码块ENDDO在每次循环开始前,检查condition是否为真,如果为真则执行代码块,然后再次检查condition。
只有当condition为假时,循环才会结束。
3.赋值语句:赋值语句用于将一个值赋给一个变量,语法如下:variable = expression可以使用算术运算符和函数来计算expression的值,并将结果赋给变量。
4.条件语句:条件语句用于根据条件选择执行不同的代码块,常用的条件语句有IF语句和SELECTCASE语句。
-IF语句的语法如下:IF (condition) THEN!代码块1ELSE IF (condition) THEN!代码块2ELSE!代码块3ENDIF根据condition的值选择执行代码块1、代码块2或代码块3-SELECTCASE语句的语法如下:SELECT CASE (expression)CASE (value1)!代码块1CASE (value2)!代码块2CASEDEFAULT!代码块3ENDSELECT根据expression的值选择执行相应的代码块,如果没有匹配的值,则执行默认的代码块。
5.IO语句:IO语句用于输入和输出数据,常用的IO语句有WRITE和READ语句。
fortran format用法

fortran format用法1.引言1.1 概述Fortran是一种编程语言,由IBM公司于1950年代开发。
它被广泛应用于科学计算和数值分析领域,尤其在大规模计算和高性能计算方面表现出色。
Fortran语言的一个重要特性是它的格式化输出功能,即Fortran Format。
Fortran Format是一种格式控制语句,用于指定数据的输出或输入格式。
它可以精确地控制数据的显示方式,包括字段宽度、数值精度、对齐方式等。
通过使用Fortran Format,程序员可以轻松地格式化输出数据,使其更易于阅读和理解。
在Fortran程序中,可以使用一些特定的符号和代码来定义格式控制语句。
例如,可以使用A表示字符型数据、I表示整型数据、F表示浮点型数据等。
通过在格式控制语句中使用这些符号和代码,可以将不同类型和长度的数据格式化为适合打印或写入文件的形式。
除了基本的数据类型,Fortran Format还提供了许多其他功能,如控制字段宽度、指数表示法、对齐方式、填充字符等。
这些功能使得程序员能够自定义数据的输出格式,满足特定需求。
Fortran Format在科学计算和数据处理中扮演着重要的角色。
它可以帮助程序员更好地展示和共享计算结果,提高代码的可读性和可维护性。
此外,由于Fortran Format提供了丰富的格式化选项,它还可以用于数据文件的读写操作。
本文将介绍Fortran Format的基本概念和常用用法。
首先,我们将讨论Fortran Format的基本原理和语法规则。
然后,我们将探讨一些常见的格式化选项,包括字段宽度控制、数值精度控制和对齐方式控制等。
最后,我们将总结Fortran Format的重要性,并展望它在未来发展中的潜力。
通过本篇文章的阅读,读者将能够全面了解Fortran Format的用法和作用,提高对Fortran编程的理解和应用能力。
无论是初学者还是有一定经验的程序员,都可以从中获益,使其编写的Fortran程序更加出色和实用。
fortran语言并行计算程序

fortran语言并行计算程序Fortran是一种编程语言,用于科学和工程计算。
Fortran语言中可以使用并行计算来加速程序的执行。
以下是一个简单的Fortran并行计算程序的示例:```fortranprogram parallel_program! 使用OpenMP库启用并行计算use omp_libimplicit noneinteger :: iinteger, parameter :: N = 1000000real :: x(N), y(N), z(N)! 初始化数组x = 1.0y = 2.0! 使用并行循环计算!$omp parallel dodo i = 1, Nz(i) = x(i) + y(i)end do! 打印部分结果do i = 1, 10print *, z(i)end doend program parallel_program```在上面的示例中,使用OpenMP库来启用并行计算。
通过添加`use omp_lib`语句,可以在程序中使用OpenMP的并行化指令。
在循环计算的部分,使用了`!$omp parallel do`指令,它告诉编译器这个循环可以并行执行。
这样,循环中的每个迭代都可以在不同的处理器上并行执行。
在这个示例中,数组`x`和`y`被初始化为 1.0和2.0。
然后,使用并行循环计算数组`z`的每个元素,将`x`和`y`对应位置的元素相加。
通过循环打印了数组`z`的前10个元素。
请注意,实际的并行计算程序可能需要更复杂的逻辑和更多的并行化指令,具体取决于问题的性质和计算的需求。
上述示例只是一个简单的示例,用于说明Fortran中的并行计算的基本概念。
C语言直接操作FORTRAN数据文件的方法

摘要:FORTRAN数据文件的结构及用C语言直接对FORTRAN数据文件进行数据读取和处理的方法,并结合实例,给出了完成操作的C语言源程序。
关键词:C语言FORTRAN数据文件数据直接读写FORTRAN语言适用于数值计算,在科学和工程计算方面发挥了重要作用。
C语言具有很强的通用程序设计功能,而且很适于处理图形图像、系统程序方面的问题,但它的数值计算能力不如FORTRAN语言。
如果能在C语言程序中直接调用FORTRAN程序的计算结果,则可充分利用这2种语言的优势。
为此,有必要建立用C语言对FORTRAN数据文件进行直接读取和处理的方法。
1 FORTRAN数据文件的结构在C语言程序中调用FORTRAN程序的计算结果,可通过FORTRAN数据文件来实现,而要用C语言直接存取FORTRAN数据文件,必须首先清楚FORTRAN数据文件的结构。
FORTRAN数据文件按存取方式的不同可分为顺序文件和直接文件。
而不论是顺序文件还是直接文件,按数据在文件中的存放方式的不同,都有2种存放形式,一种是字符形式(即ASCII码形式),另一种是二进制代码形式。
前者称为有格式存放,后者称为无格式存放。
由于对直接文件存取的基本操作步骤与对顺序文件存取的基本操作步骤相同,二者的不同主要体现在操作时是否应顺序进行。
下面以顺序文件为例进行具体分析。
1.1 有格式文件的结构有格式文件全部由有格式的记录组成,有格式的记录是字符的序列,以ASCII码形式存放。
各记录以回车符(0DH)和换行符(0AH)作为结束标志,各记录之间无分隔符,各记录的长度(字节数)可以不等。
1.2 无格式文件的结构无格式文件全部由无格式记录组成,无格式记录是值的序列,即二进制代码序列。
这种格式的文件,其第1个字节是4BH(即十进制的75),最后1个字节为82H(即十进制的130),各无格式记录的数据信息位于这2个字节之间。
每一个无格式记录都由下面3部分组成:(1)记录的首字节,是该记录所有数据所占的字节数;(2)组成该记录的各数据内容。
fortran语言语法

FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。
经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。
目前,工科院校开设的计算机编程语言课首选仍然是FORTRAN :<说实话,从科技发展的趋势来说这不是好事。
您可以设想一下,如果需要用鹅毛笔抄写大量的古籍是什么感受!强烈建议阅读《发掘C#特性赋予科学计算项目以威力》1 FORTRAN77四则运算符+ - * / ** (其中**表示乘方)在表达式中按优先级次序由低到高为:+或-→*或/→**→函数→()2 FORTRAN77变量类型2.1隐含约定:I-N规则凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。
2.2用类型说明语句确定变量类型:可以改变I-N规则2.3用IMPLICIT语句将某一字母开头的全部变量指定为所需类型如IMPLICIT REAL (I,J)三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。
2.4数组的说明与使用使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3) REAL IA(10),ND(80:99)使用隐含DO循环进行数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2)10FORMAT(1X,5(A2,I2,1X,A2,I4))2.5使用DATA语句给数组赋初值变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如DATA A,B,C/-1.0,-1.0,-1.0/DATA A/-1.0/,B/-1.0/,C/-1.0/DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)DATA CHN/10*' '/INTEGER NUM(1000)DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/3 FORTRAN77程序书写规则•程序中的变量名,不分大小写;•变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;•一行只能写一个语句;•程序的第一个语句固定为PROGRAM 程序名称字符串•某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;•某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容;•某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行;•某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;•某行的第73至80字符位为注释区,80字符位以后不能有内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Fortran中批量处理文件的方法总结—循环读取目录下的所有符合条件的文件=====================一、简单的介绍在一年之前,我写过一个程序,主要是对Micaps资料进行批量处理,将逐日资料处理为旬、月的数据,在那个程序中,始终有一个问题困扰我,就是如何自动生成该读取的下一个文件名,这使我真正开始关注fortran中的批处理,时隔一年,决定写下这些文字,将我用到的一些fortran批处理的方法和大家共享,交流。
对于那些只要会用程序,不求其中原理的朋友,请马上跳过这些文字,直接去下载附件吧!程序里有使用说明,但是,如果你不懂原理,估计现成的程序你使用起来也会碰壁哦!这里所说的批处理是指对某一个目录下的指定后缀的文件的批量读取和处理。
我总结的批处理方法大概可以用下面这个示意图来说明:|||将文件目录写入一个文本文件,供fortran循环读取|————手动输入文件名|————运行程序之前命令行工具导出文件名|————程序运行后,未开始计算之前,生成文件名| ————调用CMD命令生成| ————GETFILEINFOQQ方法生成| ————调用WIN32API生成||在程序运行时动态生成文件名||对于第一种方法,我将主要介绍如何将目录写入文件,然后举出一个小的示例来验证。
第二种方法主要是说明其思路。
二、方法的介绍1、将文件目录写入一个文本文件,供fortran循环读取1.1、手动输入文件名这是最基本的方法啦,如果文件个数不多,而且文件名中包含了空格等特殊字符的话,建议使用这种方法,在这里就不多说啦,至于在fortran中的处理,等几个小方法介绍完之后会有一个例子来说明。
1.2、运行程序之前命令行工具导出文件名这是一个既高效又保险的方法,主要思路就是通过强大的CMD命令列出目录下的文件到一个指定的文件中,然后由fortran去循环读取该文件中的文件名信息,从而批量处理。
a、从运行工具打开你的CMD窗口;b、转到要处理的当前目录(可省略):CD /d 路径,如:CD /d e:\test这样可以快速到达e:\test目录c、使用DIR命令列出文件目录信息到指定的文件,通常使用的Dir *.*>新文件名这个命令在这里已经不能满足要求,因为会列出一堆对于我们处理而言无用的信息,现在要使用的命令是:DIR /b filter>newfile注意,其中的filter为文件筛选,必须自己修改为所需的,比如你可以把它改成*.txt,这样,就会列出当前目录下的所有txt结尾的文件了。
Newfile就是你需要存放文件名的那个文件,比如可以是dir.txt,这样就成了 dir/b*.txt>dir.txt,就会把当前目录下的所有文件都列出到dir.txt文件中,当然,由于dir.txt也在当前目录,所以也会被算进去,这在处理的时候是需要注意的,下面几种方法中同样考虑了这个问题。
你可以选择手动删掉,或者把dir.txt这个文件存到其他地方去,或者,不要和你需要的文件具有相同的后缀也行,比如:dir /b *.txt>e:\dir.txt (假设当前目录是e:\test)如果省略了第二步中的转到当前目录的话,就需要在dir命令后输入完整的路径了,而且新生成的文件也要选择有权限建立新文件的地方存放,比如你在c:\users目录下输入:dir /b e:\test\*.txt>e:\dir.txt,这个命令和上面先转到e:\test 目录下的效果是一样的。
现在你是不是比较好奇,/b 是干嘛的,其实就是只列出文件名,不要其他的附件信息,比如创建时间,文件大小等等这些对于我们批处理无关的信息。
如果你想包含某个目录下的子目录,那么,就可以这样写:Dir /b/s filter>newfile/s就表示包含子目录,但是,这样会有一个问题,那就是,批处理的时候必须获得正确的路径才能操作,这样得到的子目录里面的文件不会有任何标志说他是来自子目录的,因此fortran处理的时候就无法判断了,所以,如果包含了子目录,那么请用下面的命令:Dir /a-d/b/s filter>newfile现在去看看新生成的文件吧,怎么样,很惊喜吧!懂了这个方法,下面一部分的第一个方法对你来说就是小菜一碟啦。
如果你使用的win7(或vista)系统,而且无常使用CVF编译器的话,那么第一部分到这里就算结束啦,除非,你会在其他fortran编译器中调用WIN32API。
1.3、程序运行后,未开始计算之前生成文件名1.3.1、在程序中调用CMD命令这个方法其实就是上一个方法的进化版,只不过变成了在程序运行的时候调用命令自动生成,这样整个过程显得少一点,只需要在程序里设置好相关的参数即可。
这个方法的关键在于SYSTEMQQ函数的使用,这是CVF编译器封装的调用CMD命令的一个函数,存在于DFLIB库中,其语法命令为:result = SYSTEMQQ(commandline)commandline:表示需要进行的CMD操作,字符串形式,函数中的实际长度由传入的参数决定,input类型(表示输入为参数);Results:一个逻辑型变量(logical(4)),如果成功为true,失败为false(不解的是程序中要实现的东西都是正常的,比如仅仅传入dir命令,返回的结果仍然为F,请高手赐教)给出一个简单的例子:USE DFLIBLOGICAL(4)resultresult = SYSTEMQQ('copy e:\dir.txt e:\test\dir.txt')这个命令将第一个路径中的文件复制到为第二个路径中的文件。
通过这个例子再结合上面一个方法,就可以很方法便的构造出我们需要用来批处理的子函数,关键语句如下所示:subroutine ListToFile(fPath,outPut)character*(*),InTent(In):: fPath,outPutcharacter*100CMDLOGICAL(4) resCMD="dir/a-d/b/s "//trim(fPath)//" >"//trim(outPut)res=SYSTEMQQ(CMD)endsubroutine其中传入的是文件筛选值和输出的路径,这个方法也是我在第一部分中最为推荐的一个方法了,代码简洁高效,能够输出完整的路径,可以包含子文件夹,唯一的缺点就是输出的文件个数不能直接在程序中调用(方便循环),需要在批处理的时候使用其他方法来判断文件是否读取结束。
1.3.2、使用GETFILEINFOQQ方法生成文件目录该方法是下面一个方法的进化版,是由CVF对WIN32的API进行了封装,这样,我们就可以通过简单的调用函数来实现一些面向对象的功能。
简单的翻译了一下官方给出的GETFILEINFOQQ函数信息:Module: USE DFLIB (存在于DFLIB库中)语法简介:Syntaxresult = GETFILEINFOQQ (files, buffer, handle)files :输入类型的字符型变量,表示你需要查找的路径(也就是我们上面方法中的筛选值),同样可以使用*或者?这样的通配符。
buffer :在函数运行中会获得一个值,可供输出使用,这个值就是所找到的文件的相关信息,属于FILE$INFO类型的变量(该类型定义于:fortran安装路径DF98\INCLUDE路径下),其结构如下:TYPE FILE$INFOINTEGER(4)CREATIONINTEGER(4)LASTWRITEINTEGER(4)LASTACCESSINTEGER(4)LENGTHINTEGER(4)PERMITCHARACTER(255)NAMEEND TYPE FILE$INFOhandle :接受输入和输出整型变量,表示文件控制信息(同样在DFLIB中定义),包含以下容:FILE$FIRST - First matching file found.FILE$LAST - Previous file was the last valid file.FILE$ERROR - No matching file found.Results: 返回值是一个整型变量(integer(4)),表示的不含空格的文件名长度,如果文件未找到,则返回0。
了解了以上信息,我们就可以通过编程进行循环调用这个函数,每找到一个符合条件的文件,就把他输入到指定路径的文件中去,注意,凡是input类型的变量都必须传入数值,否则会出错。
如果你比较有探索精神,就试着用这个介绍和思路来编程一下吧,子程序如下所示(完整的请下载附件)Subroutine GetFileList(cFileName,outPut,iFile)UseDFLib,only:GetFileInfoQQ,GetLastErrorQQ,FILE$INFO,FILE$LAST,FILE$ERROR,FILE $FIRST,ERR$NOMEM,ERR$NOENT,FILE$DIR !引入库函数Implicit None!根据上面的语法介绍来定义变量Character*(*),Intent(In)::cFileName !筛选值character*(*),intent(In)::output !输出路径Integer,Intent(InOut)::iFile !记录已经找到几个文件TYPE (FILE$INFO) info !找到的文件的信息INTEGER(4)::Wildhandle,length !文件控制信息,文件大小,Wildhandle = FILE$FIRSTiFile = 0DOWHILE (.TRUE.) !循环找文件length = GetFileInfoQQ(cFileName,info,Wildhandle) !调用函数找文件!如果遇到错误或者不能再找到不同的文件,则进入选择,准备退出IF ((Wildhandle .EQ. FILE$LAST) .OR.(Wildhandle .EQ. FILE$ERROR)) THENSELECT CASE (GetLastErrorQQ())CASE (ERR$NOMEM) !//存不足iFile = - 1ReturnCASE (ERR$NOENT) !//碰到通配符序列尾,正常退出ReturnCASE DEFAULTiFile = 0ReturnEND SELECTEND IFiFile= iFile + 1Call WriteFileName( Trim() ,outPut, iFile) !调用子函数输出文件名ENDDOEnd Subroutine GetFileList注意,在调用子函数输出文件名时,要做一些处理,主要是判断文件是否存在(不存在则新建,如果是第一次找到,而且文件存在,则覆盖,否则追加),以及找到的是否为我们自己建立的这个dir.txt文件(如果是,则忽略,找到的文件数量-1)这个方法也不错,如果不需要子目录的信息,其优越性不亚于上一种方法,因为该子函数能够直接返回找到的文件数量。