title: Speed up Apache Commons FTPClient transfer
body: <p>I am using Apache Commons FTPClient to upload large files, but the transfer speed is only a fraction of transfer speed using WinSCP via FTP. How can I speed up my transfer?</p>
  
  <pre><code>    public boolean upload(String host, String user, String password, String directory, 
          String sourcePath, String filename) throws IOException{
  
      FTPClient client = new FTPClient();
      FileInputStream fis = null;
  
      try {
          client.connect(host);
          client.login(user, password);
          client.setControlKeepAliveTimeout(500);
  
          logger.info("Uploading " + sourcePath);
          fis = new FileInputStream(sourcePath);        
  
          //
          // Store file to server
          //
          client.changeWorkingDirectory(directory);
          client.setFileType(FTP.BINARY_FILE_TYPE);
          client.storeFile(filename, fis);
          client.logout();
          return true;
      } catch (IOException e) {
          logger.error( "Error uploading " + filename, e );
          throw e;
      } finally {
          try {
              if (fis != null) {
                  fis.close();
              }
              client.disconnect();
  
          } catch (IOException e) {
              logger.error("Error!", e);
          }
      }         
  }
  </code></pre>