FTP是文件传输协议,一般用来对服务器上传或下载文件资源,使用非常的频繁,所以如何使用FTP上传下载功能是很必要的,虽然现在有更安全的SFTP传输协议,但FTP仍然是很普遍的。
在Java中,我们经常使用spring mvc上传文件,图片等资源,它是HTTP协议的,有时候可能要做一些自动上传文件到服务器的操作,这个时候我们可能会使用Java FTP客户端来向我们的FTP服务器自动上传文件,特别是在一些类似巴枪扫描,APP等移动设备中,经常会使用到ftp服务。
下面来开始学习如何使用Java来编写客户端向FTP服务器端上传txt文件吧!
步骤一:在pom.xml文件中加入"commons-net" jar包,里面包含了ftp相关的类,代码如下:
<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version> </dependency>
步骤二:Java实现FTP客户端文件上传功能,代码如下:
package demo; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class FTPUploader { FTPClient ftp = null; //构造方法 public FTPUploader(String host, String user, String pwd) throws Exception{ ftp = new FTPClient(); ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); int reply; //连接FTP ftp.connect(host); reply = ftp.getReplyCode(); //上传完成则关闭FTP if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); throw new Exception("Exception in connecting to FTP Server"); } //登录 ftp.login(user, pwd); ftp.setFileType(FTP.BINARY_FILE_TYPE); ftp.enterLocalPassiveMode(); } //FTP文件上传方法 public void uploadFile(String localFileFullName, String fileName, String hostDir) throws Exception { try { InputStream input = new FileInputStream(new File(localFileFullName)); this.ftp.storeFile(hostDir + fileName, input); } catch (Exception e) { e.printStackTrace(); } } //断开FTP连接 public void disconnect(){ if (this.ftp.isConnected()) { try { this.ftp.logout(); this.ftp.disconnect(); } catch (IOException f) { // do nothing as file is already saved to server } } } //测试FTP文件上传功能 public static void main(String[] args) throws Exception { System.out.println("开始上传..."); FTPUploader ftpUploader = new FTPUploader("192.168.1.117", "root", "root"); //参数一:需要上传的文件完整路径 //参数二:要存储的远程文件名称 //参数三:服务器目录 ftpUploader.uploadFile("D:/DT940/test.txt", "remote.txt", "/root/file/"); ftpUploader.disconnect(); System.out.println("上传完成!"); } }
注意:在使用java ftp客户端连接FTP服务器端之前,请提前搭建好FTP服务器端。