一、FTP连接
FTPClient类中最基本的方法就是连接FTP服务器,可以通过FTPClient对象的connect(String hostname)
方法进行连接,该方法的参数为FTP服务器的主机名。在连接成功后,可通过login(String username, String password)
方法进行登录验证,其中username和password分别为FTP服务器的用户名和密码。
FTPClient ftpClient = new FTPClient(); ftpClient.connect("ftp.example.com"); ftpClient.login("username", "password");
FTPClient还提供了enterLocalPassiveMode()
方法,用于设置客户端在传输数据时使用被动模式传输(passive mode),该方法一般在登录成功后调用。
ftpClient.enterLocalPassiveMode();
二、上传和下载
通过FTPClient对象的storeFile(String remote, InputStream local)
方法可以将本地的文件上传至FTP服务器中,参数remote为上传至FTP服务器的文件路径,local为本地文件的输入流。
File file = new File("local_file_path"); InputStream inputStream = new FileInputStream(file); ftpClient.storeFile("remote_file_path", inputStream); inputStream.close();
FTPClient还提供了retrieveFile(String remote, OutputStream local)
方法,可用于将FTP服务器中的文件下载到本地,其中remote为FTP服务器中的文件路径,local为下载文件的输出流。
File file = new File("local_file_path"); OutputStream outputStream = new FileOutputStream(file); ftpClient.retrieveFile("remote_file_path", outputStream); outputStream.close();
三、文件列表操作
FTPClient还提供了文件列表操作的方法,包括listFiles(String pathname)
用于列出FTP服务器某一路径下的所有文件和目录,其中pathname为要列出的FTP服务器路径,返回值为FTPFile数组。
FTPFile[] files = ftpClient.listFiles("server_path"); for (FTPFile file : files) { if (file.isFile()) { System.out.println(file.getName() + " is a file."); } else if (file.isDirectory()) { System.out.println(file.getName() + " is a directory."); } }
该类还提供了makeDirectory(String pathname)
和removeDirectory(String pathname)
方法,用于在FTP服务器上创建和删除目录,其中pathname为要操作的FTP服务器路径。
ftpClient.makeDirectory("new_directory"); ftpClient.removeDirectory("existing_directory");
四、异常处理
在使用FTPClient类时,需要注意异常处理。FTPClient类中提供了FTPConnectionClosedException、SocketException、IOException等异常的处理方法,可通过try-catch语句进行捕获。
try { ftpClient.storeFile("remote_file_path", inputStream); inputStream.close(); } catch (FTPConnectionClosedException e) { e.printStackTrace(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }