SFTP服务配置以及命令/代码操作
POM
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<groupId>com.qzc.helpers</groupId> | |
<artifactId>j_sftp</artifactId> | |
<packaging>jar</packaging> | |
<version>1.0-SNAPSHOT</version> | |
<name>j_sftp</name> | |
<url>http://maven.apache.org</url> | |
<dependencies> | |
<!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> | |
<dependency> | |
<groupId>com.jcraft</groupId> | |
<artifactId>jsch</artifactId> | |
<version>0.1.54</version> | |
</dependency> | |
<dependency> | |
<groupId>org.apache.commons</groupId> | |
<artifactId>commons-lang3</artifactId> | |
<version>3.5</version> | |
</dependency> | |
<dependency> | |
<groupId>junit</groupId> | |
<artifactId>junit</artifactId> | |
<version>4.12</version> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
</project> |
package com.qzc.helpers; | |
import com.jcraft.jsch.ChannelSftp; | |
import com.qzc.helpers.sftp.SFTPClient; | |
import com.qzc.helpers.sftp.SFTPConfig; | |
import com.qzc.helpers.sftp.SFTPException; | |
import com.qzc.helpers.sftp.SFTPParams; | |
import com.qzc.helpers.sftp.monitor.TimerSFTPProgressMonitor; | |
import org.apache.commons.lang3.StringUtils; | |
import java.io.InputStream; | |
import java.io.OutputStream; | |
import java.util.List; | |
/** | |
* Create by qiezhichao on 2018/5/10 0010 19:44 | |
*/ | |
public class SFTPHelper { | |
private final static String sftpHost = "192.168.118.129"; | |
private final static int sftpPort = 22; | |
private final static String sftpUserName = "sftpuser"; | |
private final static String sftpPassword = "19920508"; | |
private static SFTPClient getSFTPClient() { | |
return new SFTPClient(new SFTPConfig(sftpHost, sftpPort, sftpUserName, sftpPassword)); | |
} | |
/*************************************upload*************************************/ | |
public static void uploadOverwrite(String localFilePath, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(localFilePath, remotePath); | |
client.upload(params, ChannelSftp.OVERWRITE); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadAppend(String localFilePath, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(localFilePath, remotePath); | |
client.upload(params, ChannelSftp.APPEND); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadResume(String localFilePath, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(localFilePath, remotePath); | |
client.upload(params, ChannelSftp.RESUME); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadOverwriteWithTimerMonitor(String localFilePath, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(localFilePath, remotePath); | |
client.upload(params, ChannelSftp.OVERWRITE, new TimerSFTPProgressMonitor()); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadAppendWithTimerMonitor(String localFilePath, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(localFilePath, remotePath); | |
client.upload(params, ChannelSftp.APPEND, new TimerSFTPProgressMonitor()); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadResumeWithTimerMonitor(String localFilePath, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(localFilePath, remotePath); | |
client.upload(params, ChannelSftp.RESUME, new TimerSFTPProgressMonitor()); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadOverwrite(InputStream src, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(null, remotePath); | |
client.upload(params, ChannelSftp.OVERWRITE, src); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadAppend(InputStream src, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(null, remotePath); | |
client.upload(params, ChannelSftp.APPEND, src); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadResume(InputStream src, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(null, remotePath); | |
client.upload(params, ChannelSftp.RESUME, src); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadOverwrite(InputStream src, int bufferSize, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(null, remotePath); | |
client.upload(params, ChannelSftp.OVERWRITE, src, bufferSize); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadAppend(InputStream src, int bufferSize, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(null, remotePath); | |
client.upload(params, ChannelSftp.APPEND, src, bufferSize); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void uploadResume(InputStream src, int bufferSize, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(null, remotePath); | |
client.upload(params, ChannelSftp.RESUME, src, bufferSize); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
/*************************************download*************************************/ | |
public static void download(String remotePath, String localFilePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(localFilePath, remotePath); | |
client.download(params); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void downloadWithTimerMonitor(String remotePath, String localFilePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(localFilePath, remotePath); | |
client.download(params, new TimerSFTPProgressMonitor()); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void download(OutputStream os, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(null, remotePath); | |
client.download(params, os); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
public static void downloadWithTimerMonitor(OutputStream os, String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = buildSFTPParams(null, remotePath); | |
client.download(params, new TimerSFTPProgressMonitor(), os); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
} | |
/** | |
* 该方法使用时会出现异常:java.io.IOException: Pipe closed | |
* 原因是在 finally 中执行了 client.close(); | |
* | |
* @param remotePath | |
* @return | |
*/ | |
@Deprecated | |
public static InputStream download2InputStream(String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
SFTPParams params = new SFTPParams(); | |
params.setRemoteFilepath(remotePath); | |
return client.download2InputStream(params); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
return null; | |
} | |
/*************************************other*************************************/ | |
public static List<String> ls(String remotePath) { | |
SFTPClient client = getSFTPClient(); | |
try { | |
if (StringUtils.isEmpty(remotePath.trim())) { | |
return null; | |
} | |
return client.ls(remotePath); | |
} catch (SFTPException e) { | |
e.printStackTrace(); | |
} finally { | |
client.close(); | |
} | |
return null; | |
} | |
/*************************************private*************************************/ | |
/* | |
* 构造SFTPParams参数 | |
* | |
* @param remotePath | |
* @param localFilePath | |
* @return | |
*/ | |
private static SFTPParams buildSFTPParams(String localFilePath, String remotePath) { | |
SFTPParams params = new SFTPParams(); | |
if (StringUtils.isNotEmpty(localFilePath)) { | |
params.setLocalFilepath(localFilePath); | |
} | |
if (StringUtils.isNotEmpty(remotePath)) { | |
params.setRemoteFilepath(remotePath); | |
} | |
return params; | |
} | |
} |
package com.qzc.helpers.sftp; | |
import com.jcraft.jsch.*; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.OutputStream; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.Vector; | |
/** | |
* Create by qiezhichao on 2018/5/10 0011 20:36 | |
*/ | |
public class SFTPClient { | |
private Session session; | |
private ChannelSftp channelSftp; | |
private SFTPConfig sftpConfig; | |
public SFTPClient(SFTPConfig sftpConfig) { | |
this.sftpConfig = sftpConfig; | |
this.connect(sftpConfig); | |
} | |
private void connect(SFTPConfig sftpConfig) { | |
try { | |
session = new JSch().getSession(sftpConfig.getSftpUserName(), | |
sftpConfig.getSftpHost(), | |
sftpConfig.getSftpPort()); | |
if (null != sftpConfig.getSftpPassword()) { | |
session.setPassword(sftpConfig.getSftpPassword()); | |
} | |
if (null != sftpConfig.getTimeout()) { | |
session.setTimeout(sftpConfig.getTimeout()); | |
} | |
session.setConfig("StrictHostKeyChecking", "no"); // 让ssh客户端自动接受新主机的hostkey | |
session.connect(); | |
this.channelSftp = (ChannelSftp) session.openChannel("sftp"); | |
this.channelSftp.connect(); | |
} catch (JSchException e) { | |
this.close(); | |
e.printStackTrace(); | |
} | |
} | |
public void close() { | |
channelSftp.quit(); | |
if (null != channelSftp) { | |
channelSftp.disconnect(); | |
} | |
if (null != session) { | |
session.disconnect(); | |
} | |
} | |
/*============================================upload============================================*/ | |
/** | |
* @param sftpParams | |
* @param channelSftpModel 调用的模式: ChannelSftp.OVERWRITE,ChannelSftp.APPEND,ChannelSftp.RESUME | |
* @throws SFTPException | |
*/ | |
public void upload(SFTPParams sftpParams, int channelSftpModel) throws SFTPException { | |
try { | |
channelSftp.put(sftpParams.getLocalFilepath(), sftpParams.getRemoteFilepath(), channelSftpModel); | |
} catch (SftpException e) { | |
throw new SFTPException("Upload [" + sftpParams.getLocalFilepath() + "] to SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() | |
+ "[" + sftpParams.getRemoteFilepath() + "]" + " error.", e); | |
} | |
} | |
/** | |
* @param sftpParams | |
* @param channelSftpModel 调用的模式: ChannelSftp.OVERWRITE,ChannelSftp.APPEND,ChannelSftp.RESUME | |
* @param monitor 监视器 | |
* @throws SFTPException | |
*/ | |
public void upload(SFTPParams sftpParams, int channelSftpModel, SftpProgressMonitor monitor) throws SFTPException { | |
try { | |
channelSftp.put(sftpParams.getLocalFilepath(), sftpParams.getRemoteFilepath(), monitor, channelSftpModel); | |
} catch (SftpException e) { | |
throw new SFTPException("Upload [" + sftpParams.getLocalFilepath() + "] to SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() | |
+ "[" + sftpParams.getRemoteFilepath() + "]" + " error.", e); | |
} | |
} | |
/** | |
* @param sftpParams | |
* @param channelSftpModel 调用的模式: ChannelSftp.OVERWRITE,ChannelSftp.APPEND,ChannelSftp.RESUME | |
* @param src 输入流 | |
* @throws SFTPException | |
*/ | |
public void upload(SFTPParams sftpParams, int channelSftpModel, InputStream src) throws SFTPException { | |
try { | |
channelSftp.put(src, sftpParams.getRemoteFilepath(), channelSftpModel); | |
} catch (SftpException e) { | |
throw new SFTPException("Upload [" + sftpParams.getLocalFilepath() + "] to SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() | |
+ "[" + sftpParams.getRemoteFilepath() + "]" + " error.", e); | |
} | |
} | |
/** | |
* @param sftpParams | |
* @param channelSftpModel 调用的模式: ChannelSftp.OVERWRITE,ChannelSftp.APPEND,ChannelSftp.RESUME | |
* @param src 输入流 | |
* @param bufferSize 数据块大小 | |
* @throws SFTPException | |
*/ | |
public void upload(SFTPParams sftpParams, int channelSftpModel, InputStream src, int bufferSize) throws SFTPException { | |
OutputStream out = null; | |
try { | |
out = channelSftp.put(sftpParams.getRemoteFilepath(), channelSftpModel); | |
byte[] buff = new byte[bufferSize]; // 设定每次传输的数据块大小 | |
int read; | |
if (out != null) { | |
do { | |
read = src.read(buff, 0, buff.length); | |
if (read > 0) { | |
out.write(buff, 0, read); | |
} | |
out.flush(); | |
} while (read >= 0); | |
} | |
} catch (IOException e) { | |
throw new SFTPException("Upload [" + sftpParams.getLocalFilepath() + "] to SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() | |
+ "[" + sftpParams.getRemoteFilepath() + "]" + " error.", e); | |
} catch (SftpException e) { | |
throw new SFTPException("Upload [" + sftpParams.getLocalFilepath() + "] to SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() | |
+ "[" + sftpParams.getRemoteFilepath() + "]" + " error.", e); | |
} finally { | |
if (null != out) { | |
try { | |
out.close(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
} | |
} | |
/*============================================download============================================*/ | |
/** | |
* @param sftpParams | |
* @throws SFTPException | |
*/ | |
public void download(SFTPParams sftpParams) throws SFTPException { | |
try { | |
channelSftp.get(sftpParams.getRemoteFilepath(), sftpParams.getLocalFilepath()); | |
} catch (SftpException e) { | |
throw new SFTPException("Download [" + sftpParams.getRemoteFilepath() + "] from SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() + " error.", e); | |
} | |
} | |
/** | |
* @param sftpParams | |
* @param os | |
* @throws SFTPException | |
*/ | |
public void download(SFTPParams sftpParams, OutputStream os) throws SFTPException { | |
try { | |
channelSftp.get(sftpParams.getRemoteFilepath(), os); | |
} catch (SftpException e) { | |
throw new SFTPException("Download [" + sftpParams.getRemoteFilepath() + "] from SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() + " error.", e); | |
} | |
} | |
/** | |
* @param sftpParams | |
* @param monitor | |
* @throws SFTPException | |
*/ | |
public void download(SFTPParams sftpParams, SftpProgressMonitor monitor) throws SFTPException { | |
try { | |
channelSftp.get(sftpParams.getRemoteFilepath(), sftpParams.getLocalFilepath(), monitor); | |
} catch (SftpException e) { | |
throw new SFTPException("Download [" + sftpParams.getRemoteFilepath() + "] from SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() + " error.", e); | |
} | |
} | |
/** | |
* @param sftpParams | |
* @param monitor | |
* @param os | |
* @throws SFTPException | |
*/ | |
public void download(SFTPParams sftpParams, SftpProgressMonitor monitor, OutputStream os) throws SFTPException { | |
try { | |
channelSftp.get(sftpParams.getRemoteFilepath(), os, monitor); | |
} catch (SftpException e) { | |
throw new SFTPException("Download [" + sftpParams.getRemoteFilepath() + "] from SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() + " error.", e); | |
} | |
} | |
/** | |
* @param sftpParams | |
* @return | |
* @throws SFTPException | |
*/ | |
public InputStream download2InputStream(SFTPParams sftpParams) throws SFTPException { | |
try { | |
return channelSftp.get(sftpParams.getRemoteFilepath()); | |
} catch (SftpException e) { | |
throw new SFTPException("Download [" + sftpParams.getRemoteFilepath() + "] from SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() + " error.", e); | |
} | |
} | |
/*============================================other============================================*/ | |
/** | |
* @param remotePath | |
* @return | |
* @throws SFTPException | |
*/ | |
public List<String> ls(String remotePath) throws SFTPException { | |
try { | |
List<String> remoteFileNameList = new ArrayList<String>(); | |
Vector ls = channelSftp.ls(remotePath); | |
for(Object obj:ls){ | |
ChannelSftp.LsEntry lsEntry = (ChannelSftp.LsEntry) obj; | |
remoteFileNameList.add(lsEntry.getFilename()); | |
} | |
return remoteFileNameList; | |
} catch (SftpException e) { | |
throw new SFTPException("List [" + remotePath + "] from SFTP " | |
+ sftpConfig.getSftpHost() + ":" + sftpConfig.getSftpPort() + " error.", e); | |
} | |
} | |
} |
package com.qzc.helpers.sftp; | |
/** | |
* SFTP的基础配置 | |
* <p> | |
* Create by qiezhichao on 2018/5/12 0012 21:19 | |
*/ | |
public class SFTPConfig { | |
private String sftpHost; // sftp主机地址 | |
private int sftpPort; // sftp端口 | |
private String sftpUserName; // sftp用户名 | |
private String sftpPassword; // sftp密码 | |
private Integer timeout; // 过期时间 | |
public SFTPConfig(String sftpHost, int sftpPort, String sftpUserName, String sftpPassword) { | |
this.sftpHost = sftpHost; | |
this.sftpPort = sftpPort; | |
this.sftpUserName = sftpUserName; | |
this.sftpPassword = sftpPassword; | |
} | |
public String getSftpHost() { | |
return sftpHost; | |
} | |
public void setSftpHost(String sftpHost) { | |
this.sftpHost = sftpHost; | |
} | |
public int getSftpPort() { | |
return sftpPort; | |
} | |
public void setSftpPort(int sftpPort) { | |
this.sftpPort = sftpPort; | |
} | |
public String getSftpUserName() { | |
return sftpUserName; | |
} | |
public void setSftpUserName(String sftpUserName) { | |
this.sftpUserName = sftpUserName; | |
} | |
public String getSftpPassword() { | |
return sftpPassword; | |
} | |
public void setSftpPassword(String sftpPassword) { | |
this.sftpPassword = sftpPassword; | |
} | |
public Integer getTimeout() { | |
return timeout; | |
} | |
public void setTimeout(Integer timeout) { | |
this.timeout = timeout; | |
} | |
@Override | |
public String toString() { | |
return "SFTPConfig{" + | |
"sftpHost='" + sftpHost + '\'' + | |
", sftpPort=" + sftpPort + | |
", sftpUserName='" + sftpUserName + '\'' + | |
", sftpPassword='" + sftpPassword + '\'' + | |
", timeout=" + timeout + | |
'}'; | |
} | |
} |
package com.qzc.helpers.sftp; | |
/** | |
* Create by qiezhichao on 2018/5/11 0011 21:37 | |
*/ | |
public class SFTPException extends Exception { | |
private static final long serialVersionUID = -4539012617666225876L; | |
private Throwable cause; | |
public SFTPException(String message) { | |
super(message); | |
} | |
public SFTPException(String message, Throwable e) { | |
super(message); | |
this.cause = e; | |
} | |
public Throwable getCause() { | |
return this.cause; | |
} | |
} |
package com.qzc.helpers.sftp; | |
/** | |
* SFTP相关参数 | |
* <p> | |
* Create by qiezhichao on 2018/5/10 0010 19:36 | |
*/ | |
public class SFTPParams { | |
private String localFilepath; // 包含全路径的本地文件名 | |
private String remoteFilepath; // 包含全路径的远程文件名 | |
public String getLocalFilepath() { | |
return localFilepath; | |
} | |
public void setLocalFilepath(String localFilepath) { | |
this.localFilepath = localFilepath; | |
} | |
public String getRemoteFilepath() { | |
return remoteFilepath; | |
} | |
public void setRemoteFilepath(String remoteFilepath) { | |
this.remoteFilepath = remoteFilepath; | |
} | |
} |
package com.qzc.helpers.sftp.monitor; | |
import com.jcraft.jsch.SftpProgressMonitor; | |
import java.text.DecimalFormat; | |
import java.util.concurrent.Executors; | |
import java.util.concurrent.ScheduledExecutorService; | |
import java.util.concurrent.TimeUnit; | |
/** | |
* Create by qiezhichao on 2018/5/12 0012 12:04 | |
*/ | |
public class TimerSFTPProgressMonitor implements SftpProgressMonitor { | |
private boolean isTransEnd = false; // 是否传输完成 | |
private long fileTotalSize; // 需要传输文件的大小 | |
private long fileTransferedSize; // 已传输的大小 | |
private ScheduledExecutorService service = Executors.newScheduledThreadPool(1); | |
public void init(int op, String src, String dest, long max) { | |
System.out.println("Begin transferring."); | |
fileTotalSize = max; | |
if (fileTotalSize != 0) { | |
final DecimalFormat df = new DecimalFormat("#.##"); | |
service.scheduleAtFixedRate(new Runnable() { | |
public void run() { | |
if (!isTransEnd) { | |
if (fileTransferedSize != fileTotalSize) { | |
double d = ((double) fileTransferedSize * 100) / (double) fileTotalSize; | |
System.out.println("Current progress: " + df.format(d) + "%"); | |
} else { | |
isTransEnd = true; // 已传输大小等于文件总大小,则已完成 | |
} | |
} | |
} | |
}, 0, 1, TimeUnit.SECONDS); | |
} | |
} | |
public boolean count(final long count) { | |
fileTransferedSize = fileTransferedSize + count; | |
return true; | |
} | |
public void end() { | |
service.shutdown(); | |
System.out.println("End transferring, transferedSize : " + fileTransferedSize); | |
} | |
} |
package com.qzc.helpers; | |
import org.junit.Test; | |
import java.io.*; | |
import java.util.List; | |
/** | |
* Create by qiezhichao on 2018/5/12 0012 23:17 | |
*/ | |
public class TestSFTPHelper { | |
@Test | |
public void test1() { | |
SFTPHelper.uploadOverwrite("X:\\1234.txt", "/upload"); | |
} | |
@Test | |
public void test2() { | |
SFTPHelper.uploadOverwriteWithTimerMonitor("X:\\004_software\\cn_office_professional_plus_2007_dvd_X12-38713.iso", "/upload/"); | |
} | |
@Test | |
public void test3() throws FileNotFoundException { | |
SFTPHelper.uploadOverwrite(new FileInputStream(new File("X:\\1234.txt")), "/upload/4321.txt"); | |
} | |
@Test | |
public void test4() throws FileNotFoundException { | |
SFTPHelper.uploadOverwrite(new FileInputStream(new File("X:\\1234.txt")), 256 * 1024, "/upload/4321.txt"); | |
} | |
@Test | |
public void test5() { | |
SFTPHelper.uploadAppend("X:\\1234.txt", "/upload/1234.txt"); | |
} | |
@Test | |
public void test6() throws FileNotFoundException { | |
SFTPHelper.uploadAppend(new FileInputStream(new File("X:\\1234.txt")), "/upload/1234.txt"); | |
} | |
@Test | |
public void test7() throws FileNotFoundException { | |
SFTPHelper.uploadAppend(new FileInputStream(new File("X:\\1234.txt")), 256 * 1024, "/upload/1234.txt"); | |
} | |
@Test | |
public void test8() { | |
SFTPHelper.uploadAppendWithTimerMonitor("X:\\1234.txt", "/upload/1234.txt"); | |
} | |
@Test | |
public void test9() { | |
SFTPHelper.download("/upload/1234.txt", "X:\\4321.txt"); | |
} | |
@Test | |
public void test10() throws IOException { | |
FileOutputStream fos = new FileOutputStream(new File("X:\\4321.txt")); | |
SFTPHelper.download(fos, "/upload/1234.txt"); | |
fos.close(); | |
} | |
@Test | |
public void test11() throws IOException { | |
FileOutputStream fos = new FileOutputStream(new File("X:\\4321.txt")); | |
SFTPHelper.downloadWithTimerMonitor(fos, "/upload/1234.txt"); | |
fos.close(); | |
} | |
@Test | |
public void test12() throws IOException { | |
FileOutputStream fos = new FileOutputStream(new File("X:\\4321.txt")); | |
SFTPHelper.downloadWithTimerMonitor("/upload/1234.txt", "X:\\4321.txt"); | |
fos.close(); | |
} | |
@Test | |
public void test13(){ | |
List<String> list = SFTPHelper.ls("/upload/"); | |
for (String s:list){ | |
System.out.println(s); | |
} | |
} | |
} |
SFTP服务配置以及命令/代码操作的更多相关文章
- rsync 服务配置_rsync命令使用方法
rsync介绍 rsync用来定时备份服务器中的文件或者目录,有三种工作模式,本地复制,使用系统用户认证,守护进程方式,开源高效.同步工具,把一台机器上的文件同步都另一台机器 .默认使用873端口 选 ...
- Linux下 sftp服务配置
查看openssh的版本,使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级. 参考博客:https://yq.aliyun.com/articles/6 ...
- Linux之sftp服务
Linux之sftp服务 一.sftp介绍转自:[1]Linux如何开启SFTP https://www.cnblogs.com/xuliangxing/p/7120205.htmlSFTP是Secu ...
- Centos6.5---samba文件共享服务配置(二)
Linux-----samba服务配置(二) 需求: 某公司销售部门提出一个文件共享需求,要求部门共享目录有三个,第一个共享目录所有销售部门人员都具有可读可写权限:第二个共享目录所有销售人员只读权限, ...
- OCM_第三天课程:Section1 —》表空间的操作和管理、服务配置
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- MySQL 事务配置命令行操作和持久化
MySQL 事务配置命令行操作和持久化 参考 MySQL 官方参考手册 提供 5.5 5.6 5.7 8.0 版本的参考手册 https://dev.mysql.com/doc/refman/5.5/ ...
- Linux设置SFTP服务用户目录权限
我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 提供sftp服务 ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作
redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存 ...
- linux搭建svn服务并手动同步代码到web目录和自动更新
1.安装svn服务端 yum -y install subversion 2.查看安装路径等信息 rpm -ql subversion 3.查看svn帮助信息 svn help 4.创建svn版本库目 ...
随机推荐
- springboot+jpa多表查询
背景 关联起来查询三个表的数据 步骤 定义接收结果的中间类 在 @Query 中编写 HSQL 从数据库查询 代码 定义接收结果的中间类 IterationVo.java /** * Iteratio ...
- python - 一键复习知识点
## rest规范: 通过不同的 method 找到对应的 url ## Django 请求生命周期 - wsgi ,它就是socket 服务端,服务端接收用户请求并将请求初次封装,然后交给 D ...
- (转载) 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁 ...
- MySQL 效率提高N倍的19条MySQL优化秘籍
一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型.一个好的sql语句至少 ...
- c++和cuda混合编程 实现传统神经网络
直接放代码了... 实现的是x1+x2=y的预测,但梯度下降很慢...233333,gpu运行时间很快!! // // main.cpp // bp // // Created by jzc on 2 ...
- 数组思维 -- join的一些用法感悟
组合字符串的时候, 组合 sql 的时候, 使用join 会非常有用, join and 记得前端时间去看面试题的时候, 总会出一个小的性能题目, 就是 如果有大量的字符串处理的时候, 怎么 ...
- shell 一次性杀掉相同名称的进程
这条命令将会杀掉所有含有关键字"LOCAL=NO"的进程 ps -ef|grep LOCAL=NO|grep -v grep|cut -c -|xargs kill - 另一种方法 ...
- shell history 命令
1.history命令可以显示历史执行过的命令: 2.使用!+序号执行该序号对应的命令: 例子 $ history sed 's/haha/hello/g' test cat test cat tes ...
- 部署Hadoop集群之前的一些系统配置
修改内核参数 在/etc/sysctl.conf文件中添加如下配置(需要root权限)以下参数的默认值是在centos7下查看的fs.file-max = 6815744 //文件描述符总数,默认值: ...
- 小程序wepy购物车的逻辑
<!-- 剩余可销售商品数量 大于 0,且购买未达上限--> <view wx:if="{{(detaildata.boughtNum < detaildata.bu ...