0

假设我有一个格式如下的文件

<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 IO 模式下打开文件并使用 REWRITE 选项更改第一行以替换第一行。但我不想使用这些方法。有没有办法使用 OPEN INPUT 和 OPEN OUTPUT 模式实现相同的逻辑,并用 WRITE 方法替换行。

4

1 回答 1

0

有没有办法使用 OPEN INPUT 和 OPEN OUTPUT 模式实现相同的逻辑,并用 WRITE 方法替换行[?]

不,那会让您只剩下<records count="m">文件中的 。所有其他记录都将丢失!

只要第一条记录的长度相同,在更改n为之后mREWRITE更新该记录是最直接的方式。

也许,如果您解释为什么要使用WRITE,可能还有其他事情可以做。


如果文件不是“太大”,则将所有记录读入内存,更改第一条记录,然后将所有记录写入文件。

如果文件“太大”,请复制更改第一条记录的文件,删除第一个文件,然后重命名副本。

对于“太大”的文件可能效率较低,通过添加序列号并更改第一条记录对文件进行排序。这只是使用排序文件来临时保存数据。对于要转换的程序来说,这可能是一个糟糕的选择。

您需要定义“太”的限制是什么。

Micro Focus 中有用于文件访问的非标准例程,但这些例程可能更难转换。

于 2018-04-23T12:07:21.710 回答