CSV文件作为轻量化的文本数据格式文件,采用的是逗号作为分隔符。网上有很多对CSV文件的读取与写入数据的操作,但是都是简单的读取写入,并没有提及格式的问题。我在使用mfc向csv文件中循环刷新数据时,就遇到了一些问题,具体看代码。
首先关于文件创建这个,就不多说了。InitFile是包装了CStdioFile的相关文件操作函数。
如下图所示,其中“aaaaaaaaaa”这个,就是要在程序运行时,不断刷新的东西,写这么长很重要。
下图所示则为每次刷新的东西,每一次都会刷新对应一整行的数据,为什么要刷新一整行,而不是具体某一个需要刷新的数据,后面会明白。
下面就是ReadDataFromFile的具体实现函数,就是将定位用的字段,需要更新的字符串数组传进去,通过ReadString函数,逐行读CSV文件内容,根据定位的字段找到所在行。接着重要的是,要找到这一行最开始的位置,-2是需要考虑到换行与逗号。(当然可以定位到需要跟新的具体数据哪那一项之前,但我觉得没必要)接着就需要用SeekPointTo函数,定位到刷新的位置。注意前面说到Csv是按行来进行读写的,所以,跟新的内容(传入的那个字符串数组)必须要完整。
后面,又发现数据更新进去以后,下一行的第一列字符串缺少了几个字符,很是奇怪,查阅网上资料没有找到原因。猜测是初始化csv文件时,由于字符串都写了进去,每个逗号之间的数据格式大小已经定好了,相当于每个装数据的格子已经定好了最大的容量。所以,初始化的时候“aaaaaaaaa”就能保证后面更新数据的时候不会出现下行数据字符缺失的现象。