最近在做与文件有关的编程,今天看了一下Windows API中CopyFile的用法,记录下来,以免时间长了,忘记了。
lpExistingFileName
BOOL CopyFile( LPCTSTR lpExistingFileName, //这个试要拷贝文件的名称 LPCTSTR lpNewFileName, //这个试要拷贝文件新的名称。 BOOL bFailIfExists //一般设为FALSE,覆盖原来的文件。 );
bFailIfExists
void testCopyFile()
{
int nRet=CopyFile("E://a.txt","E://b.txt",FALSE);
if(nRet)
{
AfxMessageBox("Sucesss");
}else
{
AfxMessageBox("Fails");
}
}
void testSearchFileAndCopyFile()
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;
DWORD dwAttrs;
char szDirPath[] = "c://TEXTRO//";
char szNewPath[MAX_PATH];
char szHome[MAX_PATH];
BOOL fFinished = FALSE;
// Create a new directory.
if (!CreateDirectory(szDirPath, NULL))
{
printf("Couldn't create new directory.");
return;
}
// Start searching for .TXT files in the current directory.
hSearch = FindFirstFile("*.txt", &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
printf("No .TXT files found.");
return;
}
// Copy each .TXT file to the new directory
// and change it to read only, if not already.
while (!fFinished)
{
lstrcpy(szNewPath, szDirPath);
lstrcat(szNewPath, FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, FALSE))
{
dwAttrs = GetFileAttributes(FileData.cFileName);
if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
{
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY);
}
}
else
{
printf("Couldn't copy file.");
return;
}
if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
MessageBox(NULL, "No more .TXT files.",
"Search completed.", MB_OK);
fFinished = TRUE;
}
else
{
printf("Couldn't find next file.");
return;
}
}
}
// Close the search handle.
FindClose(hSearch);
}