假设我有一个格式为
的文件<records count="n">
record line 1
record line 2
.
.
.
record line n
</records>
我必须打开此文件,并根据某些逻辑将n的值更改为其他值。更改后,我的文件应该是。
<records count="m">
record line 1
record line 2
.
.
.
record line n
</records>
我可以在OPEN I-O模式下打开文件,并使用REWRITE选项更改第一行以替换第一行。但我不想使用这些方法。有没有办法使用OPEN INPUT和OPEN OUTPUT模式实现相同的逻辑,并用WRITE方法替换该行。
答案 0 :(得分:0)
有没有办法使用OPEN INPUT和OPEN实现相同的逻辑 输出模式并用WRITE方法[?]
替换该行
不,这会让你只留下文件中的<records count="m">
。所有其他记录都将丢失!
只要第一条记录的长度相同,将n
更改为m
后,REWRITE
就是更新该记录的最直接方式。
也许,如果你解释为什么要使用WRITE
,可能还有其他事情可以做。
如果文件“太大”,请将所有记录读入内存,更改第一条记录,然后将所有记录写入文件。
如果文件“太大”,请复制更改第一条记录的文件,删除第一个文件,然后重命名副本。
“太大”的效率可能较低,通过添加序列号并更改第一条记录来对文件进行排序。这只是暂时使用排序文件来保存数据。可能是转换程序的糟糕选择。
您需要定义'too'的限制。
Micro Focus中存在用于文件访问的非标准例程,但这些例程可能更难以转换。