JAVA中使用FTPClient上傳下載
在JAVA程式中,經常需要和FTP打交道,比如向FTP伺服器上傳檔案、下載檔案,本文簡單介紹如何利用jakarta commons中的FTPClient(在commons-net包中)實現上傳下載檔案,我建立的是mvn專案,所以在pom.xml檔案中新增依賴:
<!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/oro/oro -->
<dependency>
<groupId>oro</groupId>
<artifactId>oro</artifactId>
<version>2.0.8</version>
</dependency>
自己寫程式碼前可以先看下官方的API,官網寫的還是很詳細的(http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html),簡單截個圖看下:
好了,簡單寫個例子,很簡單,一看就明白了
/**
* 向FTP伺服器上傳檔案
*
* @param url FTP伺服器url
* @param port FTP伺服器埠
* @param username
* @param password
* @param path 本地檔案目錄
* @param remoteFile FTP伺服器儲存檔名
*/
public void sendToServer(String url, int port, String username, String password,
String path, String remoteFile) {
//建立ftp客戶端
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK");
try {
//連結ftp伺服器
ftpClient.connect(url, port);
//登入ftp
ftpClient.login(username, password);
int reply = ftpClient.getReplyCode();
System.out.println(reply);
//如果reply返回230就算成功了,如果返回530密碼使用者名稱錯誤或當前使用者無許可權下面有詳細的解釋。
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
return;
}
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.changeWorkingDirectory("/data");//修改工作目錄
File file = new File(path);
InputStream input = new FileInputStream(file);
ftpClient.storeFile(remoteFile, input);//檔名若是不指定就會上傳到root目錄下
input.close();
ftpClient.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
/**
* Description: 從FTP伺服器下載檔案
*
* @param remotePath FTP伺服器上的相對路徑
* @param fileName 要下載的檔名
* @param localPath 下載後儲存到本地的路徑
*/
public static boolean download(String url, int port, String username, String password,
String remotePath, String fileName, String localPath) {
boolean success = false;
//建立ftp客戶端
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK");
try {
int reply;
ftpClient.connect(url, port);
//如果採用預設埠,可以使用ftpClient.connect(url)的方式直接連線FTP伺服器
ftpClient.login(username, password);//登入
reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
return false;
}
ftpClient.changeWorkingDirectory(remotePath);//轉移到FTP伺服器目錄
FTPFile[] fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
File localFile = new File(localPath + "/" + ff.getName());
OutputStream is = new FileOutputStream(localFile);
ftpClient.retrieveFile(ff.getName(), is);
is.close();
}
}
ftpClient.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
參考:
相關文章
- JAVA檔案上傳下載Java
- Java SFTP 上傳、下載等操作JavaFTP
- 使用SecureCRT上傳下載檔案Securecrt
- java 上傳 下載檔案工具類Java
- java ftpclient問題JavaFTPclient
- 使用Thread打造上傳下載器thread
- xshell 使用 sftp上傳下載檔案FTP
- 使用osscsdk自定義上傳和下載callback
- java實現sftp檔案的上傳下載JavaFTP
- Java Struts檔案上傳和下載詳解Java
- java上傳檔案跟批量下載檔案Java
- ftp上傳工具下載,ftp上傳工具下載使用教程,Linux如何配置ftp伺服器?FTPLinux伺服器
- 檔案上傳下載
- springcloud中feign檔案上傳、下載SpringGCCloud
- SpringMVC中的檔案上傳和下載SpringMVC
- mac下iterm2使用rz和sz上傳下載Mac
- Java Web(十二) commons-fileupload上傳下載JavaWeb
- 28、java檔案上傳下載、郵件收發Java
- 基於socket的上傳下載(Java)精簡版Java
- SecureCRT上傳下載檔案教程(Zmodem使用教程)Securecrt
- 檔案上傳與下載
- Vertx 檔案上傳下載
- centos上傳下載檔案CentOS
- springboot 中檔案的上傳和下載Spring Boot
- ASP.NET中檔案上傳下載方法集合ASP.NET
- 使用 canvas 繪製圖片,然後下載、上傳Canvas
- commons-net-3.3 ftpClient上傳檔案報錯java.net.socketexception: connection timed outFTPclientJavaException
- 使用Vue+go實現前後端檔案的上傳下載,csv檔案上傳下載可直接照搬VueGo後端
- 檔案的上傳與下載
- 檔案上傳和下載功能
- React中使用fetch實現檔案上傳下載React
- 【SVN】Eclipse中使用Svn上傳和下載程式碼Eclipse
- vsftpd匿名使用者上傳和下載的配置FTP
- 檔案上傳下載中的安全問題(上傳漏洞與目錄遍歷攻擊)
- JAVA Web 之 struts2檔案上傳下載演示(一)(轉)JavaWeb
- Java SE 檔案上傳和檔案下載的底層原理Java
- 記錄一次使用drissionpage上傳下載的過程
- minio檔案上傳與下載