SFTP上传和下载
这里使用的是
com.jcraft:jsch:0.1.55
首先连接
JSch jsch = new JSch(); try {sshSession = jsch.getSession(username用户名, host地址, port端口);sshSession.setPassword(password密码);Properties sshConfig = new Properties();sshConfig.put("StrictHostKeyChecking", "no");sshSession.setConfig(sshConfig);sshSession.connect();Channel channel = sshSession.openChannel("sftp");if (channel != null) {channel.connect();} else {Log.e(TAG, "channel connecting failed.");}sftp = (ChannelSftp) channel; } catch (JSchException e) {e.printStackTrace(); }
FileInputStream in = null;try {File file = new File(localFile);in = new FileInputStream(file);sftp.put(localFile本地文件, remotePath上传文件, new MyprogressMonitor());return true;} catch (FileNotFoundException e) {e.printStackTrace();} catch (SftpException e) {e.printStackTrace();}
下载
try {sftp.cd(remotePath下载服务器文件夹);mkdirs(localPath下载本地地址);sftp.get(remoteFileName服务器文件名, localPath本地文件名, new MyprogressMonitor()); } catch (SftpException e) {e.printStackTrace(); }
创建目录
public void mkdirs(String path) {File f = new File(path);String fs = f.getParent();f = new File(fs);if (!f.exists()) {f.mkdirs();} }
上传和下载的监听:
public class MyprogressMonitor implements SftpProgressMonitor {@Overridepublic void init(int op, String src, String dest, long max) {fileSize = max;Log.e(TAG, "init: ==============begin===========" + src + "\\n======max=======" + max + "\\n=======dest========" + dest);}@Overridepublic boolean count(long count) {transfered += count;Log.e(TAG, "count: ================" + transfered);("文件下载中:" + transfered);if (transfered == fileSize) {("下载完成")}}@Overridepublic void end() {Log.e(TAG, "end: ====================end");}}