FTP递归文件上载,下载和删除

时间:2013-06-08 23:20:59

标签: c++ ftp wxwidgets

我使用wxFTP制作简单的客户端,我一直坚持如何递归上传我的文件夹或从FTP服务器下载(这应该与删除相同)。我知道如何上传单个文件,制作FTP文件夹和删除文件。我将欣赏一篇教授这个概念的文章(不一定用C / C ++),或者有人可以帮助我。

代码示例将受到赞赏,但将其视为次要代码。 对不起,如果它已经被问及回答,我搜索并没有得到任何回答我问题的内容。

1 个答案:

答案 0 :(得分:0)

我将回答this问题的代码翻译成C ++,就是这样。 既然So不接受答案并将其添加到评论中,我添加了我翻译成C ++的Java代码。我目前的代码太长了(因为它涉及的功能很少,因此我觉得不适合!)

    public void saveFilesToServer(String remoteDest, File localSrc) throws IOException {
    FTPClient ftp = new FTPClient();
    ftp.connect("ftp.foobar.com");
    if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
        ftp.disconnect();
        log.fatal("FTP not disconnected");
    }

    ftp.login("foo", "qwerty");
    log.info("Connected to server .");
    log.info(ftp.getReplyString());

    ftp.changeWorkingDirectory(remoteDest);
    ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

    try {
        upload(localSrc, ftp);
    }
    finally {
        ftp.disconnect();
        log.info("FTP disconnected");           
    }
}

public void upload(File src, FTPClient ftp) throws IOException {
    if (src.isDirectory()) {
        ftp.makeDirectory(src.getName());
        ftp.changeWorkingDirectory(src.getName());
        for (File file : src.listFiles()) {
            upload(file, ftp);
        }
        ftp.changeToParentDirectory();
    }
    else {
        InputStream srcStream = null;
        try {
            srcStream = src.toURI().toURL().openStream();
            ftp.storeFile(src.getName(), srcStream);
        }
        finally {
            IOUtils.closeQuietly(srcStream);
        }
    }
}