我想利用FATFS将SD(“0:”)卡根目录里的文件拷贝到U盘(“2:”)根目录里,下面是我的函数和调试结果,拷贝不过去,感觉是stract()函数问题,请大神帮助。
//拷贝函数
//path1:源文件路径
//path2:目标路径
//mode: 0,不覆盖源文件;1,覆盖源文件
//返回值:执行结果
u8 MY_copy(u8 * path1,u8 * path2,u8 mode)
{
FRESULT res;
char *fn; /* This function is assuming non-Unicode cfg. */
u8 *dstpathname=0; //目标文件夹路径+文件名
u8 *srcpathname=0; //源文件夹路径+文件名
srcpathname = path1;
dstpathname = path2;
#if _USE_LFN
fileinfo.lfsize = _MAX_LFN * 2 + 1;
fileinfo.lfname = mymalloc(SRAMIN,fileinfo.lfsize);
#endif
res = f_opendir(&dir,(const TCHAR*)path1); //打开一个源文件目录
if (res == FR_OK)
{
printf("
");
while(1)
{
res = f_readdir(&dir, &fileinfo); //读取目录下的一个文件
if (res != FR_OK || fileinfo.fname[0] == 0) break; //错误了/到末尾了,退出
//if (fileinfo.fname[0] == '.') continue; //忽略上级目录
#if _USE_LFN
fn = *fileinfo.lfname ? fileinfo.lfname : fileinfo.fname;
#else
fn = fileinfo.fname;
#endif /* It is a file. */
printf("源文件路径:%s/", path1);//打印路径
printf("%s
", fn);//打印文件名
printf("目标文件路径:%s/", path2);//打印路径
printf("%s
", fn);//打印文件名
strcat((char*)srcpathname,(const char*)"/");//源文件路径加斜杠
strcat((char*)dstpathname,(const char*)"/"); //目标路径加斜杠
strcat((char*)srcpathname,(const char*)fn);//源文件路径
strcat((char*)dstpathname,(const char*)fn);//目标路径
if(mode==0)mf_copy(srcpathname,dstpathname,0);//拷贝文件不覆盖源文件
else if(mode==1)mf_copy(srcpathname,dstpathname,1);//拷贝文件覆盖源文件
printf("拷贝后源文件路径:%s
", srcpathname);//打印文件名
printf("拷贝后目标文件路径%s
", dstpathname);//打印文件名
}
}
myfree(SRAMIN,fileinfo.lfname);
return res;
}
调试的结果是如图所示:
感觉像是stract()函数没起作用,并没有将文件路径和文件名拼接在一起,为什么呢?
一周热门 更多>