Here is an example to download a file using JSch :
ScpUploader.java :
import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; import java.io.ByteArrayInputStream; import java.util.Properties; public final class ScpUploader { public static ScpUploader newInstance() { return new ScpUploader(); } private volatile Session session; private volatile ChannelSftp channel; private ScpUploader(){} public synchronized void connect(String host, int port, String username, String password) throws JSchException { JSch jsch = new JSch(); Properties config = new Properties(); config.put("StrictHostKeyChecking", "no"); session = jsch.getSession(username, host, port); session.setPassword(password); session.setConfig(config); session.setInputStream(System.in); session.connect(); channel = (ChannelSftp) session.openChannel("sftp"); channel.connect(); } public synchronized void uploadFile(String directoryPath, String fileName, byte[] fileBytes, boolean overwrite) throws SftpException { if(session == null || channel == null) { System.err.println("No open session!"); return; }
AppEntryPoint.java :
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.SftpException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public final class AppEntryPoint { private static final String HOST = "192.168.1.1"; private static final int PORT = 22; private static final String USERNAME = "root"; private static final String PASSWORD = "root"; public static void main(String[] args) throws IOException { ScpUploader scpUploader = ScpUploader.newInstance(); try { scpUploader.connect(HOST, PORT, USERNAME, PASSWORD); } catch(JSchException e) { System.err.println("Failed to connect the server!"); e.printStackTrace(); return; } System.out.println("Successfully connected to the server!"); byte[] fileBytes = Files.readAllBytes(Paths.get("C:/file.zip")); try { scpUploader.uploadFile("/test/files", "file.zip", fileBytes, true);
Eng.Fouad Jul 21 '19 at 12:25 2019-07-21 12:25
source share