我正在处理一个大型文本文件,其中包含用管道分隔的数据,其中每行以一个文本“记录类型”字段开头-例如,“ APP”,“ ATT”,“ CON”,“ A”, “ T” ...我需要将文件拆分为具有特定记录类型的一系列文件,因此“ APP.txt”具有所有APP记录类型,等等。
我正在做的是从源文件中读取一行,抓取第一个字段,检查令牌是否在集合中,然后,如果令牌在集合中,则打开该文件并写入文件,或者如果令牌不在集合中,则创建一个新文件,对其进行写入,然后将该令牌添加到该集合中。我的程序运行正常,但创建“ CON.txt”文件时除外:
如果我从源文件中删除所有“ CON”记录类型,则可以正常工作。
如果“ CON”记录出现在第2行,它将在第2行轰炸,从而创建文件。
如果“ CON”记录出现在第50行,它将在第50行爆炸。
如果我在每个令牌前面添加一个p
,所以CON
令牌现在是pCON
令牌,则一切正常。
我很迷惑。知道为什么一个特定的文件名会给该程序带来麻烦吗?实际打开文件的代码(引发75运行时错误)是:
Open sTgtDir & sToken & ".txt" For Append As #iFileNo
其中sTgtDir
是一个以“ \”结尾的路径,在所有其他情况下都可以使用,sToken
是记录类型令牌,而iFileNo
是一个基于计数的整数。令牌集合中的项目。
答案 0 :(得分:4)
DOS和Windows平台won't open a disk file named CON (with any extension),因为这是一个特殊名称,表示“控制台”(屏幕)。抱歉-您不走运!您只需要使用不同的令牌名称(假设您没有更改操作系统的选项)。例如,您可以在Open
行之前添加:
If UCase(sToken) = "CON" then sToken = "pCON"