ftp与sftp连接实例

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);  
发布了23 篇原创文章 · 获赞 23 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/xiaojiang_520/article/details/78587713
今日推荐