Class SCPClient

java.lang.Object
com.trilead.ssh2.SCPClient

public class SCPClient extends Object
A very basic SCPClient that can be used to copy files from/to the SSH-2 server. On the server side, the "scp" program must be in the PATH.

This scp client is thread safe - you can download (and upload) different sets of files concurrently without any troubles. The SCPClient is actually mapping every request to a distinct Session.

Version:
$Id: SCPClient.java,v 1.2 2008/04/01 12:38:09 cplattne Exp $
  • Field Details

  • Constructor Details

  • Method Details

    • readResponse

      private void readResponse(InputStream is) throws IOException
      Throws:
      IOException
    • receiveLine

      private String receiveLine(InputStream is) throws IOException
      Throws:
      IOException
    • parseCLine

      private SCPClient.LenNamePair parseCLine(String line) throws IOException
      Throws:
      IOException
    • sendBytes

      private void sendBytes(Session sess, byte[] data, String fileName, String mode) throws IOException
      Throws:
      IOException
    • sendFiles

      private void sendFiles(Session sess, String[] files, String[] remoteFiles, String mode) throws IOException
      Throws:
      IOException
    • receiveFiles

      private void receiveFiles(Session sess, OutputStream[] targets) throws IOException
      Throws:
      IOException
    • receiveFiles

      private void receiveFiles(Session sess, String[] files, String target) throws IOException
      Throws:
      IOException
    • put

      public void put(String localFile, String remoteTargetDirectory) throws IOException
      Copy a local file to a remote directory, uses mode 0600 when creating the file on the remote side.
      Parameters:
      localFile - Path and name of local file.
      remoteTargetDirectory - Remote target directory. Use an empty string to specify the default directory.
      Throws:
      IOException - the io exception
    • put

      public void put(String[] localFiles, String remoteTargetDirectory) throws IOException
      Copy a set of local files to a remote directory, uses mode 0600 when creating files on the remote side.
      Parameters:
      localFiles - Paths and names of local file names.
      remoteTargetDirectory - Remote target directory. Use an empty string to specify the default directory.
      Throws:
      IOException - the io exception
    • put

      public void put(String localFile, String remoteTargetDirectory, String mode) throws IOException
      Copy a local file to a remote directory, uses the specified mode when creating the file on the remote side.
      Parameters:
      localFile - Path and name of local file.
      remoteTargetDirectory - Remote target directory. Use an empty string to specify the default directory.
      mode - a four digit string (e.g., 0644, see "man chmod", "man open")
      Throws:
      IOException - the io exception
    • put

      public void put(String localFile, String remoteFileName, String remoteTargetDirectory, String mode) throws IOException
      Copy a local file to a remote directory, uses the specified mode and remote filename when creating the file on the remote side.
      Parameters:
      localFile - Path and name of local file.
      remoteFileName - The name of the file which will be created in the remote target directory.
      remoteTargetDirectory - Remote target directory. Use an empty string to specify the default directory.
      mode - a four digit string (e.g., 0644, see "man chmod", "man open")
      Throws:
      IOException - the io exception
    • put

      public void put(byte[] data, String remoteFileName, String remoteTargetDirectory) throws IOException
      Create a remote file and copy the contents of the passed byte array into it. Uses mode 0600 for creating the remote file.
      Parameters:
      data - the data to be copied into the remote file.
      remoteFileName - The name of the file which will be created in the remote target directory.
      remoteTargetDirectory - Remote target directory. Use an empty string to specify the default directory.
      Throws:
      IOException - the io exception
    • put

      public void put(byte[] data, String remoteFileName, String remoteTargetDirectory, String mode) throws IOException
      Create a remote file and copy the contents of the passed byte array into it. The method use the specified mode when creating the file on the remote side.
      Parameters:
      data - the data to be copied into the remote file.
      remoteFileName - The name of the file which will be created in the remote target directory.
      remoteTargetDirectory - Remote target directory. Use an empty string to specify the default directory.
      mode - a four digit string (e.g., 0644, see "man chmod", "man open")
      Throws:
      IOException - the io exception
    • put

      public void put(String[] localFiles, String remoteTargetDirectory, String mode) throws IOException
      Copy a set of local files to a remote directory, uses the specified mode when creating the files on the remote side.
      Parameters:
      localFiles - Paths and names of the local files.
      remoteTargetDirectory - Remote target directory. Use an empty string to specify the default directory.
      mode - a four digit string (e.g., 0644, see "man chmod", "man open")
      Throws:
      IOException - the io exception
    • put

      public void put(String[] localFiles, String[] remoteFiles, String remoteTargetDirectory, String mode) throws IOException
      Throws:
      IOException
    • get

      public void get(String remoteFile, String localTargetDirectory) throws IOException
      Download a file from the remote server to a local directory.
      Parameters:
      remoteFile - Path and name of the remote file.
      localTargetDirectory - Local directory to put the downloaded file.
      Throws:
      IOException - the io exception
    • get

      public void get(String remoteFile, OutputStream target) throws IOException
      Download a file from the remote server and pipe its contents into an OutputStream. Please note that, to enable flexible usage of this method, the OutputStream will not be closed nor flushed.
      Parameters:
      remoteFile - Path and name of the remote file.
      target - OutputStream where the contents of the file will be sent to.
      Throws:
      IOException - the io exception
    • get

      private void get(String[] remoteFiles, OutputStream[] targets) throws IOException
      Throws:
      IOException
    • get

      public void get(String[] remoteFiles, String localTargetDirectory) throws IOException
      Download a set of files from the remote server to a local directory.
      Parameters:
      remoteFiles - Paths and names of the remote files.
      localTargetDirectory - Local directory to put the downloaded files.
      Throws:
      IOException - the io exception