OpenEdv-开源电子网

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

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

[复制链接]

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

最佳答案

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

没有捷径,都是死方法
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2020-3-6 09:10:56 | 显示全部楼层
没有捷径,都是死方法
一分耕耘一分收获。
回复

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

找到这样一个方法,利用文件截断函数,截断后面源文件留下的
                                //移动文件到开头
                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);                //关闭文件
                }
回复

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1837
金钱
1837
注册时间
2014-12-4
在线时间
717 小时
 楼主| 发表于 2020-3-6 20:02:57 | 显示全部楼层
找到这样一个方法,利用文件截断函数,截断后面源文件留下的,
                                //移动文件到开头
                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);                //关闭文件
                }
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-21 19:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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