title: Downloading files from an SFTP server using JSch
body: <p>I am using jsch to download files from server, my code below.</p>
  
  <pre><code>public static void downloadFile(TpcCredentialsDTO dto) {
          logger.trace("Entering downloadFile() method");
  
      Session session = null;
      Channel channel = null;
      ChannelSftp channelSftp = null;
      boolean success = false;
  
      try {
          JSch jsch = new JSch();
          session = jsch.getSession(dto.getUsername(), dto.getHost(),
                  dto.getPort());
          session.setPassword(dto.getPassword());
  
          session.setConfig("StrictHostKeyChecking", "no");
          session.connect();
          logger.info("Connected to " + dto.getHost() + ".");
  
          channel = session.openChannel("sftp");
          channel.connect();
          channelSftp = (ChannelSftp) channel;
  
          List&lt;String&gt; filesToDownload = getFilesToDownload(dto,channelSftp);
  
          if (!filesToDownload.isEmpty()) {
              for (String fileDownloadName : filesToDownload) {
                  success = false;
                  OutputStream output = new FileOutputStream(
                      "C:\Download\BLT_03112012");
  
                  channelSftp.get("BLT_03112012",output);
                  success = true;
                  if (success)
                      logger.info(ServerConstants.DOWNLOAD_SUCCESS_MSG
                                      + fileDownloadName);
                  output.close();
              }
  
          }else {
              logger.info(ServerConstants.NO_FILES_TO_DOWNLOAD
                      + ServerUtils.getDateTime());
              success = true;
          }
  
      } catch (JSchException ex) {
          logger.error( ServerConstants.SFTP_REFUSED_CONNECTION, ex);
      } catch (SftpException ex) {
          logger.error(ServerConstants.FILE_DOWNLOAD_FAILED, ex);
      } catch (IOException ex) {
          logger.error(ServerConstants.FILE_NOT_FOUND, ex);
      }catch (Exception ex) {
          logger.error(ServerConstants.ERROR, ex);
      }finally {
          if (channelSftp.isConnected()) {
              try {
                  session.disconnect();
                  channel.disconnect();
                  channelSftp.quit();
                  logger.info( ServerConstants.FTP_DISCONNECT);
              } catch (Exception ioe) {
                  logger.error(ServerConstants.FTP_NOT_DISCONNECT, ioe);
              }
          }
      }
      logger.trace("Exiting downloadFile() method");
  }
  
  
  sftpChannel.get(filename, outputstream) is throwing an error.
  </code></pre>
  
  <blockquote>
  <pre><code>  2: File not found
        at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2629)
        at com.jcraft.jsch.ChannelSftp._get(ChannelSftp.java:977)
        at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:946)
        at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:924)
        at za.co.tpc.sftpserver.SftpConnection.downloadFile(SftpConnection.java:72)
        at za.co.tpc.server.execute.FtpMtn.main(FtpMtn.java:44)
  </code></pre>
  </blockquote>
  
  <p>The same code does download Text Document file types but fails for 'File' filetype</p>