菜鸟求救!
找个局域网文件传输的程序,但是传输过来的程序只能保存在运行程序的文件夹内。 请问 怎么样能够将传输过来的文件
写入指定的文件夹文件接收部分程序:SOCKET_STREAM_FILE_INFO StreamFileInfo;
sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);UINT dwRead = 0;
while(dwRead<StreamFileInfo.nFileSizeLow)
{
byte* data = new byte[1024];
memset(data,0,1024);UINT dw=sockClient.Receive(data, 1024);
destFile.Write(data, dw);dwRead+=dw;
}SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,
&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);
destFile.Close();
SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);
sockClient.Close();
AfxMessageBox("接收完毕!");
}

解决方案 »

  1.   

    SOCKET_STREAM_FILE_INFO StreamFileInfo; 
    sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO)); 
    CString strtitle,str; 
    strtitle.Format(StreamFileInfo.szFileTitle); 
    str.Format("G:\\maindir\\cxb\\cxf\\%s",strtitle); 
    //CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); DWORD dwAttr = GetFileAttributes("G:\\maindir\\cxb\\cxf"); 
    if(dwAttr == 0xFFFFFFFF) //文件夹不存在 
    CreateDirectory("G:\\maindir\\cxb\\cxf",NULL); 
    CFile destFile(str, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); 
    UINT dwRead = 0; 
    while(dwRead<StreamFileInfo.nFileSizeLow) 

    byte* data = new byte[1024]; 
    memset(data,0,1024); UINT dw=sockClient.Receive(data, 1024); 
    destFile.Write(data, dw); dwRead+=dw; 
    } SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime, 
    &StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime); 
    destFile.Close(); 
    SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes); 
    sockClient.Close(); 
    AfxMessageBox("接收完毕!"); 
    }
      

  2.   

    CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
    在指定文件名为StreamFileInfo.szFileTitle的时候加上路径即可。
    不清楚你的指定路径所指的意思,如果你的意思是网络传输过来的数据包指定的话,那么就要修改包的格式,比如首先是路径长度,后面跟若干字符表示指定路径,之后才是具体数据。如果是在界面上指定路径的话,就比较简单了。