日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

基于FTP協議的文件上傳與下載

作者:好的OK Txtcyvy 更新時間: 2022-08-15 編程語言

注意在文件上傳、下載之前需要設置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

欄目分類
最近更新