文件的复制、粘贴一般是怎样实现的?
1。文件的复制、粘贴是怎样实现的?是用fopen打开,再用fwrite写一遍吗?还是有复制、粘贴的函数呢?
2。远程的复制、粘贴又怎样实现?比如,我要把一个本地的文件,粘贴到一台远程机器的指定目录内(管理员帐号和密码都有)。
问题点数:40、回复次数:10Top
1 楼lixiaosan(小三)回复于 2005-08-18 23:10:54 得分 10
都是通过剪贴板来实现的
拷贝与粘贴文本
下边的源代码演示了如何将文本(包含在CString对象“source”中)拷贝到剪贴板上。
CString source;
//put your text in source
if(OpenClipboard())
{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, LPCSTR(source));
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}
反过来,下面的代码是用来实现从剪贴板上取得文本的。
char * buffer = NULL;
//open the clipboard
CString fromClipboard;
if ( OpenClipboard() )
{
HANDLE hData = GetClipboardData( CF_TEXT );
char * buffer = (char*)GlobalLock( hData );
fromClipboard = buffer;
GlobalUnlock( hData );
CloseClipboard();
}
Top
2 楼lixiaosan(小三)回复于 2005-08-18 23:19:32 得分 10
远程的话你需要与server建立连接
然后用
CFtpConnection::PutFile()
把本地文件放到server上
这里有一个包装好的操作ftp的类
http://www.codeguru.com/Cpp/I-N/internet/ftp/article.php/c3439Top
3 楼wrongagain98(乱云)回复于 2005-08-18 23:21:59 得分 0
可是我不是要复制文本呀,我复制整个文件,那些文件都不一定是文本文件。Top
4 楼lixiaosan(小三)回复于 2005-08-18 23:26:51 得分 5
BOOL CopyFile(
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName,
BOOL bFailIfExists
);
Top
5 楼ss3295(阳光)回复于 2005-08-18 23:40:28 得分 0
学习Top
6 楼caozhy(cfx)回复于 2005-08-19 02:44:27 得分 0
MarkTop
7 楼thisisll(学习王高李,有个好身体)回复于 2005-08-19 08:38:16 得分 0
可是我不是要复制文本呀,我复制整个文件,那些文件都不一定是文本文件。
-----------
什么文件不过都是0101Top
8 楼mengqimxz(雨)回复于 2005-08-19 08:40:42 得分 0
学习Top
9 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-08-19 09:11:14 得分 10
如何与资源管理器互动剪切/拷贝/粘贴文件
http://www.vckbase.net/document/viewdoc/?id=444
VOID CutOrCopyFiles(char *lpBuffer,UINT uBufLen,BOOL bCopy)
{
UINT uDropEffect;
DROPFILES dropFiles;
UINT uGblLen,uDropFilesLen;
HGLOBAL hGblFiles,hGblEffect;
char *szData,*szFileList;
DWORD *dwDropEffect;
uDropEffect=RegisterClipboardFormat("Preferred DropEffect");
hGblEffect=GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE,sizeof(DWORD));
dwDropEffect=(DWORD*)GlobalLock(hGblEffect);
if(bCopy)
*dwDropEffect=DROPEFFECT_COPY;
else
*dwDropEffect=DROPEFFECT_MOVE;
GlobalUnlock(hGblEffect);
uDropFilesLen=sizeof(DROPFILES);
dropFiles.pFiles =uDropFilesLen;
dropFiles.pt.x=0;
dropFiles.pt.y=0;
dropFiles.fNC =FALSE;
dropFiles.fWide =TRUE;
uGblLen=uDropFilesLen+uBufLen*2+8;
hGblFiles= GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, uGblLen);
szData=(char*)GlobalLock(hGblFiles);
memcpy(szData,(LPVOID)(&dropFiles),uDropFilesLen);
szFileList=szData+uDropFilesLen;
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,
lpBuffer,uBufLen,(WCHAR *)szFileList,uBufLen);
GlobalUnlock(hGblFiles);
if( OpenClipboard(NULL) )
{
EmptyClipboard();
SetClipboardData( CF_HDROP, hGblFiles );
SetClipboardData(uDropEffect,hGblEffect);
CloseClipboard();
}
}Top
10 楼lemon_wei(研究BT,做好P2P)回复于 2005-08-19 13:03:35 得分 5
CopyFile("c:\\test\\aaa.txt","d:\\aaa.txt",FALSE);Top




