Java使用SFTP上傳文件到服務器的簡單使用
更新時間:2017年02月18日 09:18:47 作者:唐凱
這篇文章主要介紹了Java使用SFTP上傳文件到服務器的簡單使用,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
最近用到SFTP上傳文件查找了一些資料后自己做了一點總結(jié),方便以后的查詢。具體代碼如下所示:
/**
* 將文件上傳到服務器
*
* @param filePath
* 文件路徑
* @param channelSftp
* channelSftp對象
* @return
*/
public static boolean uploadFile(String filePath, ChannelSftp channelSftp) {
OutputStream outstream = null;
InputStream instream = null;
boolean successFlag = false;
try {
File isfile = new File(filePath);
if (isfile.isFile()) {
outstream = channelSftp.put(isfile.getName());
File file = new File(filePath);
if (file.exists()) {
instream = new FileInputStream(file);
byte b[] = new byte[1024];
int n;
while ((n = instream.read(b)) != -1) {
outstream.write(b, 0, n);
}
outstream.flush();
}
successFlag = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (instream != null) {
instream.close();
}
if (outstream != null) {
outstream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return successFlag;
}
private static Session initJschSession()
throws JSchException {
int ftpPort = 0;
String ftpHost = "";
String port = "00"; //sftp的端口號
String ftpUserName = ""; //用戶名
String ftpPassword = ""; //鏈接的密碼
String privateKey = ""; //
String passphrase = "";
if (port != null && !port.equals("")) {
ftpPort = Integer.valueOf(port);
}
JSch jsch = new JSch(); // 創(chuàng)建JSch對象
if (StringUtils.isNotBlank(privateKey)
&& StringUtils.isNotBlank(passphrase)) {
jsch.addIdentity(privateKey, passphrase);
}
if (StringUtils.isNotBlank(privateKey)
&& StringUtils.isBlank(passphrase)) {
jsch.addIdentity(privateKey);
}
jsch.getSession(ftpUserName, ftpHost, ftpPort);
Session session = jsch.getSession(ftpUserName, ftpHost, ftpPort); // 根據(jù)用戶名,主機ip,端口獲取一個Session對象
if (StringUtils.isNotBlank(ftpPassword)) {
session.setPassword(ftpPassword); // 設置密碼
}
return session;
}
/**
* 獲取ChannelSftp鏈接
*
* @param timeout
* 超時時間
* @return 返回ChannelSftp對象
* @throws JSchException
*/
public static ChannelSftp getChannelSftp(Session session, int timeout)
throws JSchException {
Channel channel = null;
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config); // 為Session對象設置properties
session.setTimeout(timeout); // 設置timeout時間
session.connect(); // 通過Session建立鏈接
channel = session.openChannel("sftp"); // 打開SFTP通道
channel.connect(); // 建立SFTP通道的連接
return (ChannelSftp) channel;
}
/**
* 斷開sftp鏈接
*
* @param session
* 會話
* @param channel
* 通道
*/
public static void closeConnection(Channel channel, Session session) {
try {
if (session != null) {
session.disconnect(); //關(guān)閉session鏈接
}
if (channel != null) {
channel.disconnect(); //斷開連接
}
} catch (Exception e) {
e.printStackTrace();
}
}
這里的用戶名密碼都是自己設置,這里的方法進行了簡單的封裝,方便使用。
以上所述是小編給大家介紹的Java使用SFTP上傳文件到服務器的簡單使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
SpringBoot使用Thymeleaf模板引擎訪問靜態(tài)html的過程
這篇文章主要介紹了SpringBoot使用Thymeleaf模板引擎訪問靜態(tài)html的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
關(guān)于Java8 parallelStream并發(fā)安全的深入講解
這篇文章主要給大家介紹了關(guān)于Java8 parallelStream并發(fā)安全的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-10-10
SpringBoot?Test的webEnvironment源碼解讀
這篇文章主要為大家介紹了SpringBoot?Test的webEnvironment源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09

