java sftp是什么?讓我們一起來了解一下吧!
java sftp是java程序中的一個協議。Sftp的完整英文名稱是secure filr transfer protocol,也就是安全文件傳送協議。它的作用是保證安全的傳輸文件。
sftp服務器以下兩個搭建方法:
1、直接在系統上新建一個用戶即可,這個方式最簡單,但最不安全,用戶sftp登陸之后可以隨意切換目錄,切用戶可以ssh登陸到系統,安全性很差。
2、標準sftp的搭建
sftp搭建的具體步驟分為:
1、添加sftp用戶
2、修改sftp配置
3、定義sftp用戶目錄和權限
4、啟動ssh服務功能
一個簡單的示例:
/* *?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(); } } }
以上就是小編今天的分享了,希望可以幫助到大家。