基于FTP协议的文件上传与下载

FTP协议

FTP协议建立在TCP协议之上,是进行文件传输服务的常用协议,采用C/S模式,是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。

(TCP协议可参考:http://t.csdn.cn/6a78D )

FTP服务器的简单使用

在使用之前我们需要在电脑上装一个FTP服务器(easyftp server)并打开如下图所示:

接着我们需要创建一个账号,设置登陆名和登陆密码,并将FTP服务器设在F:\\run\\FTP目录下,这样我们之后上传的文件便会显示在此目录下,下载时也会从此目录中寻找文件。此目录便是我们我们的服务器位置。

FTP服务器的连接

1.创建FTP客户端对象

2.通过服务器的IP地址和端口号进行连接

3.通过用户名和密码进行登陆

4.FTP服务器用完之后需要断开连接

import java.io.FileInputStream;
import java.io.IOException;

import org.apache.commons.net.ftp.FTPClient;

public class Test {
	public static void main(String[] args) {
		//FTP的客户端对象
		FTPClient ftpClient = new FTPClient();

        //step1:连接FTP服务器
		ftpClient.connect("192.168.254.185", 21);

		//step2:登陆
		ftpClient.login("admin", "admin");
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
                //用完之后需要断开FTP服务器
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

FTP服务器中的文件上传

1.连接FTP服务器

2.创建本地文件的输入流,读取本地文件

3.设置文件类型将文件设置为二进制文件

4.上传 ftpClient.storeFile("zym.jpg",localIn ),传入文件名字以及所要上传的文件流

5.断开连接

import java.io.FileInputStream;
import java.io.IOException;

import org.apache.commons.net.ftp.FTPClient;

public class Test {
	public static void main(String[] args) {
		//FTP的客户端对象
		FTPClient ftpClient = new FTPClient();
		try(FileInputStream localIn = new FileInputStream("E:\\run\\IO流\\image\\tj.jpg")){
			//step1:连接FTP服务器
			ftpClient.connect("192.168.254.185", 21);
			
			//step2:登陆
			ftpClient.login("admin", "admin");
			
			//step3:操作
			
			//判断目录是否存在
			boolean isChange = ftpClient.changeWorkingDirectory("zym");
			System.out.println("切换工作目录1:" + isChange);
			if(!isChange) {
				//不存在 则创建该目录
				ftpClient.makeDirectory("zym");
				isChange = ftpClient.changeWorkingDirectory("zym");
			}
			System.out.println("切换工作目录2:" + isChange);
			//存储文件(将本地文件上传至FTP服务器)
			//参数1:ftp服务器的存储位置(目录+文件名)
			//参数2:本地的文件输入流
			
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//存储前设置文件类型
			ftpClient.storeFile("zym.jpg",localIn );//存储
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

FTP服务器中的文件下载

1.连接FTP服务器

2.创建输出流,确定下载位置

3.设置文件类型将文件设置为二进制文件

4.下载 ftpClient.retrieveFile(downlaodFileName, download),传入下载文件名,以及所要下载的路径

5.断开连接

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;

public class FtpDownLoad {
	public static void main(String[] args) {
		//创建FTP客户端
		FTPClient ftpClient = new FTPClient();
		
		//所要下载的文件
		String downlaodFileName = "tj.jpg";
		try (FileOutputStream download = new FileOutputStream("E:\\run\\test\\a.jpg")){
			//连接并登录
			ftpClient.connect("192.168.254.181", 21);
			ftpClient.login("root", "root");
			
			ftpClient.changeWorkingDirectory("image");//切换目录
			
			//下载文件
			//参数1:服务器指定文件
			//参数2: 本地输出流(负责下载后写入)
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			boolean isRetrieve = ftpClient.retrieveFile(downlaodFileName, download);
			System.out.println("下载成功?"+isRetrieve);
			
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
}

  • 19
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值