关于STM32单片机FATFS文件系统下删除SD卡中txt文件一行的问题

2019-07-20 21:23发布

如题,之前做的从SD卡中读取数据已经OK了,现在需要从SD卡中的*.txt文件中删除一行指定的信息,数据比较少,比如ABCDEF,这个有什么好的的方法么?大家说说思路。
我看了在PC上操作文件他们的方法是要把整个文件读到内存里,然后删除之后重新些回去,但是txt文件比较大,单片机的内存肯定不够。
大家一起来给点建议吧!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
lvehe
1楼-- · 2019-07-20 22:58
新建一个临时文件,读取前面部分复制进去,然后读取后面部分复制进去,删除原文件,重命名临时文件。
void
2楼-- · 2019-07-21 04:26
按照二楼的方法,你开辟一个小点的数组,然后循环使用就行
倩宝宝咿呀咿呀呦
3楼-- · 2019-07-21 09:50
lvehe 发表于 2016-7-6 19:10
新建一个临时文件,读取前面部分复制进去,然后读取后面部分复制进去,删除原文件,重命名临时文件。

但是这样的速度是不是会比较慢啊?
倩宝宝咿呀咿呀呦
4楼-- · 2019-07-21 12:57
 精彩回答 2  元偷偷看……
void
5楼-- · 2019-07-21 13:01
 精彩回答 2  元偷偷看……
倩宝宝咿呀咿呀呦
6楼-- · 2019-07-21 17:43
void 发表于 2016-7-7 11:13
对,好像也没更好的办法了。Fatfs应该也没有专门删除文件中的内容的接口。

我下午想起来一个适用于我当前这个项目的一个比较简单的方法,因为我这边是需要添加和删除的,这个都是由服务器来控制,当删除数据的时候,我把这一行的数据都覆盖成空格符(前提是我这里的数据每行的长度相同),这样在文件中就不存在这个数据,查找的时候也不会有这个数据,当添加数据的时候,我从文件末尾开始找空格符,找到之后覆盖空格符这一行,如果没有空格的就添加到文件的末尾,这样添加就不会让文件中存在太多的空格,并且也不用把文件倒来倒去的了。

一周热门 更多>