fortran批量文件操作

举例说明A文件夹下有文件:201006270801.dat201008050809.dat201009010902.dat……要求在B文件夹下找对应文件:20100801... 举例说明
A文件夹下有文件:
201006270801.dat
201008050809.dat
201009010902.dat
……
要求在B文件夹下找对应文件:
20100801.dat
20100809.dat
20100902.dat
…… 写入新的文件夹
B文件夹中文件个数多于A文件夹个数
由于是气象资料,所以数目很大,fortran中有没有相关文件名的操作可以实现?或者其余哪些编辑器可以实现。
展开
 我来答
天河流纹石
推荐于2016-06-13 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4106万
展开全部

文件名,这个概念在Fortran中其实是字符串。你可以用任何字符串相关的操作和函数来处理它。


比如,你要分别打开 0001.txt , 0002.txt,0003.txt 等等。可以参考这样写:


Character( Len = 4 ) :: cStr

Integer i

Do i = 1 , 3

  Write( cStr , '(i4.4)' ) i

  Open( 12 , File = cStr )

  !//在此读取文件

  Close( 12 )

End Do


具体的书写办法,你给的信息量不够。

  1. 到底多少个文件,你提前是否知晓?

  2. 文件名之间是否有规律可循?


最后,纠正你的一个基本概念错误:

书写代码,是 “编辑器” 的事情。而实现,是编译器的事情。

如果你找不到方法来实现某个功能,找任何编辑器都帮不了你。

希望你理解编辑器和编译器的概念。

更多追问追答
追问
举例,201007290801.dat    就是10年7月29到8月1日的一次过程的资料,要把A文件夹下所有文件名日期的最后一天在B中找到,也就是20100801.dat,A中的文件名之间无规律可循,循环是做不来的,只能考虑对文件名的读取把
追答

你现在的问题是两个:

  1. 如何在一个文件夹中循环所有没有规律的文件。

  2. 如何根据 201007290801.txt 得到 20100801.txt。

第一个问题有多个解决方案。

第二个问题很简单了。cStr = '201007290801.txt' ,那么 c = cStr(1:4) // cStr(9:) 就是 '20100801.txt'


回到第一个问题。

Fortran语法中没有对文件夹循环的规定。你需要使用到一些编译器的扩展功能。

这需要你确定你使用的编译器是否支持以下内容:

  1. system 或 systemqq 函数,windows 下 visual fortran 编译器应该都支持。

  2. GetFileInfoQQ 函数,同上。

  3. Win32 API 函数,也同上。

如果支持这些内容。那么你有以下的解决方案:

  1. 用 system 或 systemqq 函数,调用系统命令,windows 下为 dir,把所有文件名写入 txt 文件。然后读取该 txt 文件,获得每个文件的文件名。

  2. 用 GetFileInfoQQ 函数,本身就能实现穷举。(我把代码列在下面)

  3. 用 Win32 API,FindFirstFile 和 FindNextFile。这用起来会麻烦一些。

如果你需要,我可以为你提供第一种或第二种的代码。(有点长,这里放不下)

AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
上河鱼霸
2013-06-29 · TA获得超过232个赞
知道小有建树答主
回答量:133
采纳率:100%
帮助的人:112万
展开全部
用cmd命令“dir”可实现。
用dir命令列出A文件夹下的所有文件名,
再对这些文件名用fortran操作,得到B文件夹下的对应文件名,

最后,创建新的文件夹,将上面的文件复制到这个新文件夹中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式