OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2865|回复: 3

请教各位:使用FATFS修改完文本在写进去的问题

[复制链接]

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1837
金钱
1837
注册时间
2014-12-4
在线时间
717 小时
发表于 2020-3-5 20:01:43 | 显示全部楼层 |阅读模式
5金钱
我想把一个文本内容读出来,修改完以后在写进去。已经可以读出来修改了,但是写进去的时候遇到了问题;
开始的时候没有移动文件指针,写进去的数据在原文文件后面追加了。后来使用f_lseek(f_check,0);把指针移到最开始,然后在写进去,这次发现如果写的文件长度小于原来的文件长度,会造成原来的文件留下一点。
各位有没有什么方法可以去掉原来的文件内容,写入新的文件内容那??

最佳答案

查看完整内容[请看2#楼]

可以考虑用这个函数试试“https://www.runoob.com/python/file-truncate.html”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-3-5 20:01:44 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1837
金钱
1837
注册时间
2014-12-4
在线时间
717 小时
 楼主| 发表于 2020-3-6 20:02:07 | 显示全部楼层
本帖最后由 loudianxin 于 2020-3-6 20:11 编辑

找到这样一个方法,利用文件截断函数,截断后面源文件留下的,
                                //移动文件到开头
                f_lseek(f_check,0);

                res = f_write(f_check,(char*)g_arrUart2RecvBuf, (UINT)strlen((char*)g_arrUart2RecvBuf), (UINT*)&write);        //写入目的文件

                if(write<bread)
                {
                        res = f_lseek (f_check , write); //指针移动
                        res = f_truncate (f_check ); //截断后面的文件
                        res = f_sync ( f_check ); //刷新关闭文件
                }
                else
                {
                                f_close(f_check);                //关闭文件
                }
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2019-6-1
在线时间
7 小时
发表于 2020-4-9 17:27:15 | 显示全部楼层
res = f_lseek(&fil, f_tell(&fil) - 46);
f_write(&fil, line1, 46, &bww);

我的数据就是46个字节
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-2 18:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表