javascript
JAVA实现SFTP实例(JSCH)
JAVA實現SFTP實例
最近寫的一個JAVA實現SFTP的實例:
/*
* Created on 2009-9-14
* Copyright 2009 by www.xfok.net. All Rights Reserved
*
*/
package net.xfok.ftp;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import java.util.Vector;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
/**
* @author YangHua
* 轉載請注明出處:http://www.xfok.net/2009/10/124485.html
*/
public class MySFTP {
/**
* 連接sftp服務器
* @param host 主機
* @param port 端口
* @param username 用戶名
* @param password 密碼
* @return
*/
public ChannelSftp connect(String host, int port, String username,
String password) {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jsch.getSession(username, host, port);
Session sshSession = jsch.getSession(username, host, port);
System.out.println("Session created.");
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
System.out.println("Session connected.");
System.out.println("Opening Channel.");
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
System.out.println("Connected to " + host + ".");
} catch (Exception e) {
}
return sftp;
}
/**
* 上傳文件
* @param directory 上傳的目錄
* @param uploadFile 要上傳的文件
* @param sftp
*/
public void upload(String directory, String uploadFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file=new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 下載文件
* @param directory 下載目錄
* @param downloadFile 下載的文件
* @param saveFile 存在本地的路徑
* @param sftp
*/
public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file=new File(saveFile);
sftp.get(downloadFile, new FileOutputStream(file));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 刪除文件
* @param directory 要刪除文件所在目錄
* @param deleteFile 要刪除的文件
* @param sftp
*/
public void delete(String directory, String deleteFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
sftp.rm(deleteFile);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 列出目錄下的文件
* @param directory 要列出的目錄
* @param sftp
* @return
* @throws SftpException
*/
public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException{
return sftp.ls(directory);
}
public static void main(String[] args) {
MySFTP sf = new MySFTP();
String host = "192.168.0.1";
int port = 22;
String username = "root";
String password = "root";
String directory = "/home/httpd/test/";
String uploadFile = "D:\\tmp\\upload.txt";
String downloadFile = "upload.txt";
String saveFile = "D:\\tmp\\download.txt";
String deleteFile = "delete.txt";
ChannelSftp sftp=sf.connect(host, port, username, password);
sf.upload(directory, uploadFile, sftp);
sf.download(directory, downloadFile, saveFile, sftp);
sf.delete(directory, deleteFile, sftp);
try{
sftp.cd(directory);
sftp.mkdir("ss");
System.out.println("finished");
}catch(Exception e){
e.printStackTrace();
}
}
}
轉載請注明出處:http://www.xfok.net/2009/10/124485.html
?================
使用Jsch實現文件上傳
2009-04-12 22:34:41
標簽:Jsch 文件上傳 Sftp [推送到技術圈]
| 版權聲明:原創(chuàng)作品,允許轉載,轉載時請務必以超鏈接形式標明文章原始出處 、作者信息和本聲明。否則將追究法律責任。http://kangyunqiang.blog.51cto.com/674292/149015 |
| 使用Jsch可以很容易地實現sftp文件上傳。具體代碼如下: import java.io.File; import com.jcraft.jsch.Channel; ?
?private String host; ?private String osName; ?private List<String> filenames = new ArrayList<String>(); ?public SftpHelper(String host, String username, String password, int port) { ?public SftpHelper(String host, String username, String password, int port, ?public void addFilename(String filename) { ?public void setFilenames(List<String> filenames) { ?public void run() { ?/** ???InputStream in = null; ????String uploadname = filename.substring(idx == -1 ? 0 : idx + 1); ????sleep(5000); ????in = new FileInputStream(filename); ????byte[] b = new byte[1024]; ?public static void main(String[] args) { 附件中有一個Jsch包,和一個mini-sftp-server。 |
?
總結
以上是生活随笔為你收集整理的JAVA实现SFTP实例(JSCH)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 架构师最怕程序员知道的十件事
- 下一篇: excel转成csv格式的默认分隔符