接触C#程序操作FTP不久,现在遇到了个问题:
例如:ftp地址:mft.lfap.net,里面有A文件夹和B文件夹,我现在想通过C#程序将A文件夹里面的下载完成的文件移到B文件夹中,不知到这个方法怎么写。目前C#中使用FtpWebRequest对象来实现操作FTP的。忘各位高手帮忙解决下。

解决方案 »

  1.   

    FTP操作类
    通过Rename即可
      

  2.   

    问题补充:现在的需求不能直接修改原目录名称,因为原目录里面的文件可能不是都是同一时间下载完。
    通过Rename好像只能修改文件名或目录名的吧。不知道只移动一个文件是怎么写的。现在的需求就是想像C#中对文件操作的Move和copy类似的那样。
      

  3.   

    你可以上传一个空文件到目标位置,然后用AppendFile把源文件的内容拷贝到新文件,这块我没写,以后有空补上
      

  4.   

    Rename真的是没法解决文件移动,最后使用下把文件下载成二进制数据保存在内存中,再从内存中将数据上传到新的目录下,反正是达到了移动的效果。先就这样实现吧。
      

  5.   

    最笨的方法:
    1. 下载 mft.lfap.net/A/a1.txt 到本地 D:\upload\a1.txt
    2. 删除 mft.lfap.net/A/a1.txt
    3. 将本地 D:\upload\a1.txt 上传到 mft.lfap.net/B
    第二种方法:public void ReName(string currentFilename, string newFilename)
            {
                FtpWebRequest reqFTP;
                try
                {
                    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));
                    reqFTP.Method = WebRequestMethods.Ftp.Rename;
                    reqFTP.RenameTo = newFilename;
                    reqFTP.UseBinary = true;
                    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                    Stream ftpStream = response.GetResponseStream();
                    ftpStream.Close();
                    response.Close();
                }
                catch (Exception)
                {                
                    throw;
                }
            }