網(wǎng)站首頁 編程語言 正文
注意在文件上傳、下載之前需要設(shè)置ftp服務(wù)器的權(quán)限,如下圖:
文件下載
1.創(chuàng)建字符串保存要獲取的文件名
2.創(chuàng)建FTPclient實例
FTPClient ftpClient=new FTPClient();
3.創(chuàng)建輸出流
4.創(chuàng)建連接
ftpClient.connect("192.168.254.137",21);
5.用賬戶名和密碼登錄
ftpClient.login("admin", "admin");
6.用changeWorkingDirectory()方法切換到文件所在的目錄
ftpClient.changeWorkingDirectory("Camera Roll"); //切換目錄
7.使用setFileType()方法設(shè)置二進制文件類型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
8.用retrieveFile()方法下載文件,這里需要指定文件名和輸出流作為此方法的參數(shù)
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服務(wù)器指定目錄的某個文件
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"); //切換目錄
//設(shè)置二進制文件類型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//下載文件(獲取FTP服務(wù)器指定目錄(Camera Roll)的文件
//參數(shù)1:服務(wù)器指定文件
//參數(shù)2:本地輸出流(負(fù)責(zé)下載后寫入)
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.創(chuàng)建FTPclient實例
FTPClient ftpClient=new FTPClient();
2.創(chuàng)建輸入流
3.連接ftp服務(wù)器
ftpClient.connect("192.168.254.137",21);
4.用賬戶名和密碼登錄
ftpClient.login("admin", "admin");
5.用changeWorkingDirectory()方法切換到文件所在的目錄,若目錄不存在則創(chuàng)建,之后再進行切換目錄
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()方法設(shè)置二進制文件類型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
7.用storeFile()方法下載文件,這里需要指定上傳的文件名和輸入流作為此方法的參數(shù)
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服務(wù)器
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服務(wù)器)
//參數(shù)1:ftp服務(wù)器的存儲位置(目錄+文件名)
//參數(shù)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
相關(guān)推薦
- 2023-03-22 一文帶你學(xué)會Python?Flask框架設(shè)置響應(yīng)頭_python
- 2023-01-08 Android的VSYNC機制和UI刷新流程示例詳解_Android
- 2022-09-25 C#基礎(chǔ)--特殊的集合
- 2023-12-16 IDEA中設(shè)置遠(yuǎn)程調(diào)試服務(wù)器上的程序
- 2022-12-10 深入了解C++11中promise和future的使用_C 語言
- 2022-07-08 Android?iOS常用APP崩潰日志獲取命令方法_Android
- 2022-06-28 ES6基礎(chǔ)語法之?dāng)?shù)組拓展_基礎(chǔ)知識
- 2024-01-27 Linux關(guān)于Centos IP靜態(tài)配置
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支