Java FTP文件上传:实例解析及类定义

5星 · 超过95%的资源 3 下载量 56 浏览量 更新于2024-09-01 收藏 66KB PDF 举报
本文主要介绍如何使用Java编程语言实现文件上传至FTP服务器的功能,通过一个具体的实例展示了基于Apache Commons Net库的FTPClient类的使用方法。 在Java中,要实现文件上传到FTP服务器,通常会借助第三方库如Apache Commons Net。这个库提供了FTPClient类,用于处理FTP协议的相关操作。以下是一个简单的Java FTP文件上传工具类的示例: ```java package com.fz.common.util; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class FileUtil { / * 创建一个DataInputStream,从本地文件读取数据 * * @return DataInputStream对象 */ public static DataInputStream getInput() { DataInputStream in = null; try { in = new DataInputStream(new FileInputStream("c:/wmc.dat")); return in; } catch (FileNotFoundException e) { e.printStackTrace(); } return in; } / * 创建一个白色管理文件,将字节数组写入指定文件 * * @param whites 字节数组 * @param file 文件路径 * @return 是否成功创建 */ public static boolean creatWhiteManageFile(byte[] whites, String file) { DataOutputStream out = null; try { out = new DataOutputStream(new FileOutputStream(file)); out.write(whites); return true; } catch (FileNotFoundException e) { // 错误处理 } catch (IOException e) { // 错误处理 } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } return false; } / * 使用FTPClient上传文件到FTP服务器 * * @param host FTP服务器地址 * @param port FTP服务器端口 * @param username FTP用户名 * @param password FTP密码 * @param localFile 本地文件路径 * @param remoteFile 远程文件路径 * @return 是否上传成功 */ public static boolean uploadFileToFtpServer(String host, int port, String username, String password, String localFile, String remoteFile) { FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(host, port); int replyCode = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(replyCode)) { return false; } if (!ftpClient.login(username, password)) { return false; } ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); InputStream fis = new FileInputStream(localFile); ftpClient.storeFile(remoteFile, fis); fis.close(); ftpClient.logout(); ftpClient.disconnect(); return true; } catch (IOException e) { e.printStackTrace(); return false; } } } ``` 在这个工具类中,`getInput()`方法用于创建一个`DataInputStream`,从本地文件中读取数据。`creatWhiteManageFile()`方法则用于创建一个新的文件并写入字节数组。而核心的`uploadFileToFtpServer()`方法实现了文件上传功能,它首先连接到FTP服务器,然后登录,设置文件传输类型为二进制,接着调用`storeFile()`方法将本地文件上传到FTP服务器指定的路径,最后注销用户并断开连接。 在实际使用中,你需要根据自己的需求配置`host`、`port`、`username`、`password`、`localFile`和`remoteFile`参数,然后调用`uploadFileToFtpServer()`方法即可完成文件上传。 此外,为了保证代码健壮性,异常处理部分应根据实际情况进行完善,例如在出现异常时记录日志或通知用户。在上传完成后,确保正确关闭所有打开的流,以避免资源泄露。