ftp与sftp连接实例

来源:互联网 发布:大数据方向好不好 编辑:程序博客网 时间:2024/06/05 04:37

1.ftp连接方式

import java.io.IOException;  import org.apache.commons.net.ftp.FTPClient;  public class Test1 {      public static FTPClient ftpClient = new FTPClient();      public static boolean connect(String hostname, String username,              String password) throws IOException {          ftpClient.connect(hostname);          ftpClient.setControlEncoding("UTF-8");          if (ftpClient.login(username, password)) {              ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);              System.out.println("FTP连接成功!");              return true;          }          System.out.println("FTP连接失败!");          disconnect();          return false;      }      public static void disconnect() throws IOException {          if (ftpClient.isConnected()) {              ftpClient.disconnect();              System.out.println("FTP disconnected..");          }      }      public static void main(String[] args) {          try {              String hostname = "10.193.22.146";              String username = "test";              String password = "test";              connect(hostname, username, password);              disconnect();          }catch (Exception e) {              e.printStackTrace();          }      }  }  

2.sftp连接方式

import com.jcraft.jsch.Channel;  import com.jcraft.jsch.ChannelSftp;  import com.jcraft.jsch.JSch;  import com.jcraft.jsch.Session;  public class Test {      private ChannelSftp sftp;      /**      * @param args      * @throws InterruptedException      * @throws ParseException      * @throws IOException      */      public static void main(String[] args) throws InterruptedException,              ParseException, Exception {          sftp = connect("10.198.12.87", 22, "admin", "admin");          sftp.disconnect();      }      /**      * 连接sftp服务器      *       * @param host 主机      * @param port 端口      * @param username 用户名      * @param password 密码      * @return      */      public static 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) {              e.printStackTrace();          }          return sftp;      }      public ChannelSftp getSftp() {          return sftp;      }      public void setSftp(ChannelSftp sftp) {          this.sftp = sftp;      }  }  

备注:
1.ftp连接不安全,一般出于安全性的考虑会关闭ftp端口,连接ftp都是通过sftp方式连接;
2.ftp的上传与下载需要设置文件传输模式为二进制传输模式,如:

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);  
原创粉丝点击