`

转:JAVA实现SFTP上传,下载,删除等方法

    博客分类:
  • java
 
阅读更多
  1. 原载:http://blog.csdn.net/haidage/article/details/6859716
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8. import java.io.InputStreamReader;  
  9. import java.io.LineNumberReader;  
  10. import java.util.ArrayList;  
  11. import java.util.List;  
  12. import java.util.Properties;  
  13.   
  14. import com.jcraft.jsch.Channel;  
  15. import com.jcraft.jsch.ChannelSftp;  
  16. import com.jcraft.jsch.JSch;  
  17. import com.jcraft.jsch.Session;  
  18. import com.jcraft.jsch.SftpException;  
  19.   
  20. public class SFTPUtil {  
  21.       
  22.     private String host = "127.0.0.1";  
  23.     private String username="MingMac";  
  24.     private String password="×××";  
  25.     private int port = 22;  
  26.     private ChannelSftp sftp = null;  
  27.     private String localPath = "/var/test";  
  28.     private String remotePath = "/var/tset";  
  29.     private String fileListPath = "/var/test/java/test.txt";  
  30.     private final String seperator = "/";  
  31.       
  32.     /** 
  33.      * connect server via sftp 
  34.      */  
  35.     public void connect() {  
  36.         try {  
  37.             if(sftp != null){  
  38.                 System.out.println("sftp is not null");  
  39.             }  
  40.             JSch jsch = new JSch();  
  41.             jsch.getSession(username, host, port);  
  42.             Session sshSession = jsch.getSession(username, host, port);  
  43.             System.out.println("Session created.");  
  44.             sshSession.setPassword(password);  
  45.             Properties sshConfig = new Properties();  
  46.             sshConfig.put("StrictHostKeyChecking""no");  
  47.             sshSession.setConfig(sshConfig);  
  48.             sshSession.connect();  
  49.             System.out.println("Session connected.");  
  50.             System.out.println("Opening Channel.");  
  51.             Channel channel = sshSession.openChannel("sftp");  
  52.             channel.connect();  
  53.             sftp = (ChannelSftp) channel;  
  54.             System.out.println("Connected to " + host + ".");  
  55.         } catch (Exception e) {  
  56.             e.printStackTrace();  
  57.         }  
  58.     }  
  59.     /** 
  60.      * Disconnect with server 
  61.      */  
  62.     public void disconnect() {  
  63.         if(this.sftp != null){  
  64.             if(this.sftp.isConnected()){  
  65.                 this.sftp.disconnect();  
  66.             }else if(this.sftp.isClosed()){  
  67.                 System.out.println("sftp is closed already");  
  68.             }  
  69.         }  
  70.   
  71.     }  
  72.   
  73.     public void download() {  
  74.         // TODO Auto-generated method stub  
  75.           
  76.   
  77.     }  
  78.       
  79.       
  80.     private void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {  
  81.         try {  
  82.             sftp.cd(directory);  
  83.             File file = new File(saveFile);  
  84.             sftp.get(downloadFile, new FileOutputStream(file));  
  85.         } catch (Exception e) {  
  86.             e.printStackTrace();  
  87.         }  
  88.     }  
  89.       
  90.     /** 
  91.      * upload all the files to the server 
  92.      */  
  93.     public void upload() {  
  94.         List<String> fileList = this.getFileEntryList(fileListPath);  
  95.         try {  
  96.             if(fileList != null){  
  97.                 for (String filepath : fileList) {  
  98.                     String localFile = this.localPath + this.seperator+ filepath;  
  99.                     File file = new File(localFile);  
  100.                       
  101.                     if(file.isFile()){  
  102.                         System.out.println("localFile : " + file.getAbsolutePath());  
  103.                         String remoteFile = this.remotePath + this.seperator + filepath;  
  104.                         System.out.println("remotePath:" + remoteFile);  
  105.                         File rfile = new File(remoteFile);  
  106.                         String rpath = rfile.getParent();  
  107.                         try {  
  108.                             createDir(rpath, sftp);  
  109.                         } catch (Exception e) {  
  110.                             System.out.println("*******create path failed" + rpath);  
  111.                         }  
  112.   
  113.                         this.sftp.put(new FileInputStream(file), file.getName());  
  114.                         System.out.println("=========upload down for " + localFile);  
  115.                     }  
  116.                 }  
  117.             }  
  118.         } catch (FileNotFoundException e) {  
  119.             // TODO Auto-generated catch block  
  120.             e.printStackTrace();  
  121.         } catch (SftpException e) {  
  122.             // TODO Auto-generated catch block  
  123.             e.printStackTrace();  
  124.         }  
  125.           
  126.     }  
  127.     /** 
  128.      * create Directory 
  129.      * @param filepath 
  130.      * @param sftp 
  131.      */  
  132.     private void createDir(String filepath, ChannelSftp sftp){  
  133.         boolean bcreated = false;  
  134.         boolean bparent = false;  
  135.         File file = new File(filepath);  
  136.         String ppath = file.getParent();  
  137.         try {  
  138.             this.sftp.cd(ppath);  
  139.             bparent = true;  
  140.         } catch (SftpException e1) {  
  141.             bparent = false;  
  142.         }  
  143.         try {  
  144.             if(bparent){  
  145.                 try {  
  146.                     this.sftp.cd(filepath);  
  147.                     bcreated = true;  
  148.                 } catch (Exception e) {  
  149.                     bcreated = false;  
  150.                 }  
  151.                 if(!bcreated){  
  152.                     this.sftp.mkdir(filepath);  
  153.                     bcreated = true;  
  154.                 }  
  155.                 return;  
  156.             }else{  
  157.                 createDir(ppath,sftp);  
  158.                 this.sftp.cd(ppath);  
  159.                 this.sftp.mkdir(filepath);  
  160.             }  
  161.         } catch (SftpException e) {  
  162.             System.out.println("mkdir failed :" + filepath);  
  163.             e.printStackTrace();  
  164.         }  
  165.           
  166.         try {  
  167.             this.sftp.cd(filepath);  
  168.         } catch (SftpException e) {  
  169.             e.printStackTrace();  
  170.             System.out.println("can not cd into :" + filepath);  
  171.         }  
  172.           
  173.     }  
  174.     /** 
  175.      * get all the files need to be upload or download 
  176.      * @param file 
  177.      * @return 
  178.      */  
  179.     private List<String> getFileEntryList(String file){  
  180.         ArrayList<String> fileList = new ArrayList<String>();  
  181.         InputStream in = null;  
  182.         try {  
  183.               
  184.             in = new FileInputStream(file);  
  185.             InputStreamReader inreader = new InputStreamReader(in);  
  186.               
  187.             LineNumberReader linreader = new LineNumberReader(inreader);  
  188.             String filepath = linreader.readLine();  
  189.             while(filepath != null){  
  190.                 fileList.add(filepath);  
  191.                 filepath = linreader.readLine();  
  192.             }  
  193.             in.close();  
  194.         } catch (FileNotFoundException e) {  
  195.             // TODO Auto-generated catch block  
  196.             e.printStackTrace();  
  197.         } catch (IOException e) {  
  198.             // TODO Auto-generated catch block  
  199.             e.printStackTrace();  
  200.         }finally{  
  201.             if(in != null){  
  202.                 in = null;  
  203.             }  
  204.         }  
  205.   
  206.         return fileList;  
  207.     }  
  208.   
  209.     /** 
  210.      * @return the host 
  211.      */  
  212.     public String getHost() {  
  213.         return host;  
  214.     }  
  215.   
  216.     /** 
  217.      * @param host the host to set 
  218.      */  
  219.     public void setHost(String host) {  
  220.         this.host = host;  
  221.     }  
  222.   
  223.     /** 
  224.      * @return the username 
  225.      */  
  226.     public String getUsername() {  
  227.         return username;  
  228.     }  
  229.   
  230.     /** 
  231.      * @param username the username to set 
  232.      */  
  233.     public void setUsername(String username) {  
  234.         this.username = username;  
  235.     }  
  236.   
  237.     /** 
  238.      * @return the password 
  239.      */  
  240.     public String getPassword() {  
  241.         return password;  
  242.     }  
  243.   
  244.     /** 
  245.      * @param password the password to set 
  246.      */  
  247.     public void setPassword(String password) {  
  248.         this.password = password;  
  249.     }  
  250.   
  251.     /** 
  252.      * @return the port 
  253.      */  
  254.     public int getPort() {  
  255.         return port;  
  256.     }  
  257.   
  258.     /** 
  259.      * @param port the port to set 
  260.      */  
  261.     public void setPort(int port) {  
  262.         this.port = port;  
  263.     }  
  264.   
  265.     /** 
  266.      * @return the sftp 
  267.      */  
  268.     public ChannelSftp getSftp() {  
  269.         return sftp;  
  270.     }  
  271.   
  272.     /** 
  273.      * @param sftp the sftp to set 
  274.      */  
  275.     public void setSftp(ChannelSftp sftp) {  
  276.         this.sftp = sftp;  
  277.     }  
  278.   
  279.     /** 
  280.      * @return the localPath 
  281.      */  
  282.     public String getLocalPath() {  
  283.         return localPath;  
  284.     }  
  285.   
  286.     /** 
  287.      * @param localPath the localPath to set 
  288.      */  
  289.     public void setLocalPath(String localPath) {  
  290.         this.localPath = localPath;  
  291.     }  
  292.   
  293.     /** 
  294.      * @return the remotePath 
  295.      */  
  296.     public String getRemotePath() {  
  297.         return remotePath;  
  298.     }  
  299.   
  300.     /** 
  301.      * @param remotePath the remotePath to set 
  302.      */  
  303.     public void setRemotePath(String remotePath) {  
  304.         this.remotePath = remotePath;  
  305.     }  
  306.   
  307.     /** 
  308.      * @return the fileListPath 
  309.      */  
  310.     public String getFileListPath() {  
  311.         return fileListPath;  
  312.     }  
  313.   
  314.     /** 
  315.      * @param fileListPath the fileListPath to set 
  316.      */  
  317.     public void setFileListPath(String fileListPath) {  
  318.         this.fileListPath = fileListPath;  
  319.     }  
  320.       
  321.     public static void main(String[] args) {  
  322.         // TODO Auto-generated method stub  
  323.         SFTPUtil ftp= new SFTPUtil();  
  324.         ftp.connect();  
  325.         ftp.upload();  
  326.         ftp.disconnect();  
  327.         System.exit(0);  
  328.     }  
  329.   
  330.   
  331. }  
分享到:
评论

相关推荐

    JAVA实现SFTP上传,下载,删除等方法

    本文将详细讲解如何使用开源库JSch来实现在Java中进行SFTP的上传、下载以及删除文件的方法。 JSch是一个纯Java实现的SSH2库,它提供了对SFTP的支持,允许我们在Java应用中安全地执行文件传输。首先,我们需要添加...

    JAVA SFTP文件上传、下载及批量下载实例

    在本篇文章中,我们将详细介绍JAVA SFTP文件上传、下载及批量下载的实例,包括相关的概念、API介绍、代码实现等方面的内容。 首先,我们需要了解什么是SFTP?SFTP(Secure File Transfer Protocol)是一种安全的...

    java操作sftp上传下载

    本文将详细讲解如何使用Java实现SFTP的上传、下载以及相关的批量操作、远程目录创建和文件删除功能。 首先,我们需要一个支持SFTP的Java库,例如JSch(Java Secure Channel)。JSch是一个开放源码的Java库,它实现...

    JSch - Java实现的SFTP(文件上传详解篇)

    JSch 实现 SFTP 核心类,它包含了所有 SFTP 的方法,如:put():文件上传、get():文件下载、cd():进入指定目录、ls():得到指定目录下的文件列表、rename():重命名指定文件或目录、rm():删除指定文件、mkdir():...

    java通过sftp模式实现FTP的文件上传下载删除功能

    本篇文章将详细探讨如何使用Java通过SFTP模式实现FTP的文件上传、下载和删除功能。 一、SFTP简介 SFTP与传统的FTP不同,FTP在明文传输数据,存在安全隐患,而SFTP则利用SSH提供的加密机制,确保数据在传输过程中的...

    java操作sftp的工具类(JSch)

    JSch是一个纯Java实现的SSH2库,允许开发人员连接到支持SFTP的服务器,进行文件的上传、下载以及执行其他相关操作。本文将详细介绍如何使用JSch进行SFTP操作,并提供一个简单的`SftpUtil`工具类示例。 首先,我们...

    JAVA实现SFTP实例.txt

    资源内容:Java实现Sftp中文件的操作,如目录或文件创建及删除,拉取文件,上传文件。可以直接拿来使用。

    java SFTP上传所需jar和秘钥工具

    Java SFTP上传涉及的技术栈主要围绕Java Secure Channel (JSch) 库,Java Cryptography Extension (JCE) 政策,以及PuTTY工具。这些组件在实现安全的文件传输协议(SFTP)时扮演着关键角色。 首先,让我们深入了解每...

    java实现ftp、sftp的文件上传和下载

    这篇内容将详细介绍如何使用Java实现FTP和SFTP的文件上传与下载,并涉及相关的Apache库。 FTP是一种基于TCP的服务,主要用于在互联网上进行文件传输。Java中可以使用Apache Commons Net库来实现FTP操作。首先,需要...

    基于Java的实例源码-用Java写的SFTP代码.zip

    5. **文件操作**:SFTP会话对象是一个`ChannelSftp`实例,提供了丰富的API进行文件操作,如`cd`改变目录,`ls`列出目录,`put`上传文件,`get`下载文件,`rm`删除文件,`mkdir`创建目录,`chmod`改变文件权限等。...

    java版SFTP实现示例(使用jsch)

    通过JSch,我们可以实现连接到远程服务器,创建、上传、下载、删除文件,以及列出目录等操作。 下面是一些使用JSch实现SFTP的关键知识点: 1. **连接设置**:首先,我们需要配置远程服务器的主机名、端口、用户名...

    用java写的SFTP代码源码下载

    本文将深入探讨如何使用Java实现SFTP功能,以及提供的源码下载。 Java作为一种广泛使用的编程语言,拥有丰富的库来支持各种网络协议,包括SFTP。在Java中实现SFTP,我们通常会使用JSch库,这是一个开源的Java SSH2...

    sftp常用方法汇总,支持流上传,文件上传,下载,删除各类方法

    sftp常用方法汇总,支持流上传,文件上传,下载,删除各类方法,使用时候秩序new SFtpUtils(),压入对应的sftp连接参数即可调用相应参数。

    jsch-0.1.53.jar实现SFTP上传下载删除

    在本案例中,我们将关注如何利用JSch库来实现SFTP文件的上传、下载和删除功能。 **SFTP基础** SFTP是基于SSH协议的文件传输协议,它提供了安全的数据传输,确保了文件传输过程中的数据完整性。与FTP不同,SFTP在...

    JSch - Java实现的SFTP(文件上传/下载详解篇)

    除了基本的上传和下载,JSch还支持其他SFTP操作,如列出目录内容(`ls()`),改变当前工作目录(`cd()`),重命名文件(`rename()`),以及删除文件或目录(`rm()`和`rmdir()`)等。 在完成所有文件操作后,记得关闭...

    java sftp tools

    Java SFTP工具可以帮助开发者实现这一功能,通常包括连接到SFTP服务器、列出目录、上传下载文件、管理文件权限等功能。 在描述中提到的“博文链接:https://messon619.iteye.com/blog/922052”,这可能是一个关于...

    使用Java向服务器上传文件压缩包并实现解压缩

    JSch是一个纯Java实现的SSH2库,它允许用户连接到SFTP服务器,进行文件传输、创建目录、删除文件等操作。首先,我们需要在项目中引入JSch库,然后创建一个`Session`对象,设置用户名、密码或密钥对,并连接到SFTP...

    Java文件传输工具(SFTP、FTP、HTTP上传下载)

    总的来说,Java实现文件上传下载工具涉及网络编程、I/O流、字符编码等多个方面,开发者需要理解各种协议的工作原理,并合理选择和使用合适的库来简化开发过程。对于复杂的项目,可能还需要考虑到性能优化、安全性...

    java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件

    本篇文章将深入探讨如何使用Java来实现对Linux服务器的文件上传、操作、下载和删除,以及如何借助ganymed-ssh2库实现远程操作。 首先,让我们了解基础概念。Linux服务器是一种基于Linux操作系统并提供网络服务的...

Global site tag (gtag.js) - Google Analytics