Copy all directories to server by FTP using Java

前端 未结 2 1663
故里飘歌
故里飘歌 2021-02-06 10:23

I need to copy a directory from the local disk to a server. The directory contains a lot of directories, subdirectories, and files. (Think of a hierarchy tree of directories).<

相关标签:
2条回答
  • 2021-02-06 10:39
    upload(fileName){
      If (filename is not dir){
       ftpFile();
       return;
     }
     listoffiles = get the list of all files in dir 
        for each file : listoffiles {
        upload(file)
     }
    

    }

    0 讨论(0)
  • 2021-02-06 10:55

    The following is an example of a recursive solution to the problem:

    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);
            }
        }
    }
    

    IOUtils is a part of Apache Commons IO.

    0 讨论(0)
提交回复
热议问题