基于FTP协议的文件写入和传输

FTP 协议的概括:

文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。FTP协议与TCP协议有着相似的的地方,都基于连接来实现文件的共享,同时也分为客户端和服务器。在现实生活中基于FTP的服务端程序已经有了成熟的发展,同事时也不需要我们来手动的实现服务的代码,下面,我们就以easyftp这个小程序来实现文件的共享。

 在这个小的程序中我们可以,自己设定用户登陆账户以及密码,同时还可以给予用户相应的权限,如,查看以及删除文件的权限等。服务器的相应功能就介绍完了。

下面我们开始客户端的创建:

在Java SE中并没有,关于ftp协议的架包,所以我们用到的是,Apache提供的第三方架包(commom-net) 

下面是代码的实现:

文件的上传:

package com.apesource;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;

public class tast {
	public static void main(String[] args) {
		// 创建对象
		FTPClient clint = new FTPClient();
		try (FileInputStream location = new FileInputStream("F:\\陈嘻嘻\\新建文件夹\\555.jpg")) {
			// 连接FTP服务器
			clint.connect("192.168.43.71", 21);
			// 登陆
			clint.login("5211314", "5211314");
			// 切换到指定文件夹下
			boolean is = clint.changeWorkingDirectory("cici");
			if (!is) {
				clint.makeDirectory("cici");
				clint.changeWorkingDirectory("cici");
			}
			// 存储文件
			// 参数一:ftp服务器的存储位置
			// 参数二:本地的文件输入流             
			clint.setFileType(FTPClient.BINARY_FILE_TYPE);
			boolean istrue = clint.storeFile("face.png", location);
			System.out.println("是否上传成功:"+istrue);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				clint.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

上传结果:

 我们可以看到在对应的目录下,已经有了相应的图片.

文件的下载:

文件的下载,即从服务器中将文件下载到本地磁盘中

package com.apesource;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

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

public class tast3 {
	public static void main(String[] args) {
		String fileName = "face.png";

		// 创建对象
		FTPClient clint = new FTPClient();
		try (FileOutputStream out = new FileOutputStream("F:\\陈嘻嘻\\新建文件夹\\豆瓣图\\"+fileName)) {
			// 连接FTP服务器
			clint.connect("192.168.43.71", 21);
			// 登陆
			clint.login("5211314", "5211314");
			//
			boolean is = clint.changeWorkingDirectory("cici");
			System.out.println("是否切换成功"+is);
			// 下载文件
			// 参数一:ftp服务器指定文件
			// 参数二:本地的文件输出流             
			clint.setFileType(FTPClient.BINARY_FILE_TYPE);
			boolean isTrue = clint.retrieveFile(fileName, out);
			System.out.println("下载成功?"+isTrue);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				clint.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	
	}

}

下载结果;

 我们可以看见在指定的目录下,已经有了face.png这张图片,代表下载成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值