網站首頁 編程語言 正文
注意在文件上傳、下載之前需要設置ftp服務器的權限,如下圖:
文件下載
1.創建字符串保存要獲取的文件名
2.創建FTPclient實例
FTPClient ftpClient=new FTPClient();
3.創建輸出流
4.創建連接
ftpClient.connect("192.168.254.137",21);
5.用賬戶名和密碼登錄
ftpClient.login("admin", "admin");
6.用changeWorkingDirectory()方法切換到文件所在的目錄
ftpClient.changeWorkingDirectory("Camera Roll"); //切換目錄
7.使用setFileType()方法設置二進制文件類型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
8.用retrieveFile()方法下載文件,這里需要指定文件名和輸出流作為此方法的參數
ftpClient.retrieveFile(fileName, out);
具體代碼如下:
package com.gjh.FTP;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
//下載FTP服務器指定目錄的某個文件
public class FtpRetrieve {
public static void main(String[] args) {
String fileName="game_ctwall_182761_2.jpg";
FTPClient ftpClient=new FTPClient();
try (FileOutputStream out=new FileOutputStream("D:\\Text\\aaa\\"+fileName)){
ftpClient.connect("192.168.254.137",21);
ftpClient.login("admin", "admin");
ftpClient.changeWorkingDirectory("Camera Roll"); //切換目錄
//設置二進制文件類型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//下載文件(獲取FTP服務器指定目錄(Camera Roll)的文件
//參數1:服務器指定文件
//參數2:本地輸出流(負責下載后寫入)
boolean isRetrieve=ftpClient.retrieveFile(fileName, out);
System.out.println("下載成功?:"+isRetrieve);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
文件上傳
1.創建FTPclient實例
FTPClient ftpClient=new FTPClient();
2.創建輸入流
3.連接ftp服務器
ftpClient.connect("192.168.254.137",21);
4.用賬戶名和密碼登錄
ftpClient.login("admin", "admin");
5.用changeWorkingDirectory()方法切換到文件所在的目錄,若目錄不存在則創建,之后再進行切換目錄
boolean isChange=ftpClient.changeWorkingDirectory("guojiahua");
System.out.println("切換工作目錄1"+isChange);
if(!isChange) {
ftpClient.makeDirectory("guojiahua");
isChange=ftpClient.changeWorkingDirectory("guojiahua");
}
System.out.println("切換工作目錄2"+isChange);
6.使用setFileType()方法設置二進制文件類型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
7.用storeFile()方法下載文件,這里需要指定上傳的文件名和輸入流作為此方法的參數
ftpClient.storeFile("151-1G204103113.jpg",loginInput);
具體代碼如下:
package com.gjh.FTP;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
public class ftpTrans {
public static void main(String[] args) {
FTPClient ftpClient=new FTPClient();
try (FileInputStream loginInput=
new FileInputStream("C:\\Users\\86178\\Pictures\\Camera Roll\\151-1G204103113.jpg")){
//連接FTP服務器
ftpClient.connect("192.168.254.137",21);
//登錄
ftpClient.login("admin", "admin");
//操作
//切換至指定目錄
boolean isChange=ftpClient.changeWorkingDirectory("guojiahua");
System.out.println("切換工作目錄1"+isChange);
if(!isChange) {
ftpClient.makeDirectory("guojiahua");
isChange=ftpClient.changeWorkingDirectory("guojiahua");
}
System.out.println("切換工作目錄2"+isChange);
//存儲文件(將本地文件上傳至FTP服務器)
//參數1:ftp服務器的存儲位置(目錄+文件名)
//參數2:本地的文件輸入流
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile("151-1G204103113.jpg",loginInput);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
原文鏈接:https://blog.csdn.net/qq_50587186/article/details/126195734
相關推薦
- 2021-12-02 使用gin框架搭建簡易服務的實現方法_Golang
- 2022-06-23 .bat文件中start、pause、goto及rem的用法示例_DOS/BAT
- 2022-05-23 C#多線程之線程同步WaitHandle_C#教程
- 2022-09-16 python解析照片拍攝時間進行圖片整理_python
- 2022-11-09 CSS元素定位
- 2022-04-21 R語言繪圖數據可視化Ridgeline?plot山脊圖畫法_R語言
- 2022-09-21 Python機器學習庫scikit-learn入門開發示例_python
- 2022-05-04 python設計模式之單例模式你了解多少_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支