Bài viết này hướng dẫn bạn cách kết nối và đăng nhập vào một máy chủ FTP bằng cách sử dụng thư viện commons-net-3.3.jar của Apache.
Lớp FTPClient (org.apache.commons.net.ftp.FTPClient) cung cấp các API cần thiết để làm việc với một máy chủ thông qua giao thức FTP.
Connect FTP Server
Để connect FTP Server, sử dụng phương thức:
void connect(String server, int port)
Sau khi connect và trước khi login thì chúng ta phải check code được trả về xem máy chủ FTP có đáp ứng lệnh connect không bằng lệnh sau:
FTPReply.isPositiveCompletion(ftpClient.getReplyCode())
Nếu có phản hồi thì mới gọi tiếp lệnh login.
Login FTP Server
Để login FTP Server, sử dụng phương thức:
boolean login(String username, String password)
Phương thức login() trả về true nếu login thành công, false nếu login không thành công.
Ví dụ connect FTP Server trong java
File: FTPSample.java
import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class FTPSample { private static final String FTP_SERVER_ADDRESS = "127.0.0.1"; private static final int FTP_SERVER_PORT_NUMBER = 21; private static final int FTP_TIMEOUT = 60000; private static final int BUFFER_SIZE = 1024 * 1024 * 1; private static final String FTP_USERNAME = "haophong"; private static final String FTP_PASSWORD = "1234567890"; private FTPClient ftpClient; /** * main * * @param args */ public static void main(String[] args) { FTPSample ftpSample = new FTPSample(); ftpSample.connectFTPServer(); } /** * connect ftp server * * @author viettuts.vn */ private void connectFTPServer() { ftpClient = new FTPClient(); try { System.out.println("connecting ftp server..."); // connect to ftp server ftpClient.setDefaultTimeout(FTP_TIMEOUT); ftpClient.connect(FTP_SERVER_ADDRESS, FTP_SERVER_PORT_NUMBER); // run the passive mode command ftpClient.enterLocalPassiveMode(); // check reply code if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { disconnectFTPServer(); throw new IOException("FTP server not respond!"); } else { ftpClient.setSoTimeout(FTP_TIMEOUT); // login ftp server if (!ftpClient.login(FTP_USERNAME, FTP_PASSWORD)) { throw new IOException("Username or password is incorrect!"); } ftpClient.setDataTimeout(FTP_TIMEOUT); System.out.println("connected"); } } catch (IOException ex) { ex.printStackTrace(); } } /** * disconnect ftp server * * @author viettuts.vn */ private void disconnectFTPServer() { if (ftpClient != null && ftpClient.isConnected()) { try { ftpClient.logout(); ftpClient.disconnect(); } catch (IOException ex) { ex.printStackTrace(); } } } }
Kết quả:
connecting ftp server... connected