我试图了解如何在 vhdl 中读取文件,如果我打开一个文件,通读它,测试文件结尾,关闭文件,然后重新打开该文件,然后再次开始读取,它会从开头开始吗?文件?
非常感谢
向 VHDL 语言的权威寻求答案。
IEEE 标准 1076-2008
5.5 文件类型
5.5.1 概述
文件类型定义定义文件类型。文件类型用于定义表示主机系统环境中的文件的对象。文件对象的值是主机系统文件中包含的值的序列。
5.5.2 文件操作
FILE_OPEN 过程打开由External_Name 参数指定的外部文件,并将其与文件对象F 关联。如果对FILE_OPEN 的调用成功(见下文),则称该文件对象已打开并且该文件对象具有访问模式取决于提供给 Open_Kind 参数的值(参见 16.3)。
— 如果提供给 Open_Kind 参数的值为 READ_MODE,则文件对象的访问模式为只读。此外,文件对象被初始化,以便后续的 READ 将返回外部文件中的第一个值。值按照它们在外部文件中出现的顺序从文件对象中读取。
...
如果文件对象 F 与外部文件关联,则过程 FILE_CLOSE 终止对与 F 关联的外部文件的访问并关闭该外部文件。如果 F 不与外部文件关联,则 FILE_CLOSE 无效。无论哪种情况,在调用 FILE_CLOSE 将文件对象与形式参数 F 关联起来之后,文件对象都不再打开。
...
程序 READ 从文件中检索下一个值;如果文件对象的访问模式是只写或者文件对象未打开,则会发生错误。过程 WRITE 将一个值附加到文件中。过程 FLUSH 请求实现完成之前对文件的 WRITE 过程的所有调用的效果。对于 WRITE 和 FLUSH 过程,如果文件对象的访问模式是只读或文件未打开,则会出错。如果对访问模式为只读的打开文件对象进行后续 READ 操作可以从文件中检索另一个值,则函数 ENDFILE 返回 FALSE;否则,返回 TRUE。对于访问模式为只写的打开文件对象,函数 ENDFILE 始终返回 TRUE。如果对未打开的文件对象调用 ENDFILE,则会发生错误。
进一步阅读将揭示文件访问是独占的,您无法在没有 FILE_CLOSE 的情况下执行另一个 FILE_OPEN。您可以通过查找后续 FILE_OPEN 而没有前面的 FILE_CLOSE 将返回 STATUS_ERROR 来证明这一点。
因此 FILE_OPEN 从头开始访问。重置到文件开头的唯一方法是先 FILE_CLOSE,然后 FILE_OPEN。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)