MOVE 文件出错
显示:“无法读源文件或磁盘”。
代码如下,请各位大大帮忙解决,谢谢了!
bool MyMoveFiles(AnsiString FromFile,AnsiString ToFile)
{
SHFILEOPSTRUCT op;
op.hwnd = NULL;
op.wFunc = FO_MOVE;
op.pFrom = FromFile.c_str();
op.pTo = ToFile.c_str();
op.fFlags = FOF_NOCONFIRMATION;
int result = SHFileOperation(&op);
return (result == 0) ? true : false;
}
void __fastcall TLanLogUpload::Button2Click(TObject *Sender)
{
if( MyMoveFiles(MoveFileName+"\0",LogBackUpPath+"\0") == true)
{
LogBkFlag->Text = "PASS";
LogBkFlag->Color = clGreen;
Sleep(100);
}
else
{
LogBkFlag->Text = "FAIL";
LogBkFlag->Color = clRed;
}
}
//MoveFileName 是当前的绝对路径的文件名 LogBackUpPath 是保存路径是对的。
问题是同一个文件有的时候可以移动过去,有时候就不可以,请问大大,这会是什么原因?
[解决办法]
是不是文件被其他应用程序占用?或者看看是不是杀毒软件惹得祸
[解决办法]
MyMoveFiles改成下面试试:
#include <stdio.h>#include <tchar.h>bool MyMoveFiles(AnsiString FromFile, AnsiString ToFile){ char szFrom[MAX_PATH], szTo[MAX_PATH]; memset(szFrom, 0x0, MAX_PATH); memset(szTo, 0x0, MAX_PATH); strcpy(szFrom, FromFile.c_str()); strcpy(szTo, ToFile.c_str()); SHFILEOPSTRUCTA op; op.hwnd = NULL; op.wFunc = FO_MOVE; op.pFrom = szFrom; op.pTo = szTo; op.fFlags = FOF_NOCONFIRMATION; return SHFileOperation(&op) == 0;}