java 删除ftp服务器上的文件在哪里_JAVA通过FTP方式向远程服务器或者客户端上传、下载文件,以及删除FTP服务器上的文件...

packagecom.yxjr.mytest;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importcom.yxjr.common.utils.UUIDUtils;importorg.apache.commons.net.ftp.FTPClient;importorg.apache.commons.net.ftp.FTPFile;importorg.apache.commons.net.ftp.FTPReply;/*** FTP服务器工具类*/

public classFTPUtils {/*** 上传文件至FTP服务器

*

*@paramurl 服务器IP地址

*@paramport 服务器端口

*@paramuserName 用户登录名

*@parampassword 用户登录密码

*@paramstorePath 服务器文件存储路径

*@paramfileName 服务器文件存储名称

*@paramis 文件输入流

*@returntrue:上传成功

*

* false:上传失败*/

public static boolean storeFile(String url, intport, String userName, String password, String storePath, String fileName, InputStream is) {boolean result = false;

FTPClient ftp= newFTPClient();try{//连接至服务器,端口默认为21时,可直接通过URL连接

ftp.connect(url, port);//登录服务器

ftp.login(userName, password);//判断返回码是否合法

if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {//不合法时断开连接

ftp.disconnect();//结束程序

returnresult;

}//判断ftp目录是否存在,如果不存在则创建目录,包括创建多级目录

String s = "/" +storePath;

String[] dirs= s.split("/");

ftp.changeWorkingDirectory("/");//按顺序检查目录是否存在,不存在则创建目录

for (int i = 1; dirs != null && i < dirs.length; i++) {if (!ftp.changeWorkingDirectory(dirs[i])) {if(ftp.makeDirectory(dirs[i])) {if (!ftp.changeWorkingDirectory(dirs[i])) {return false;

}

}else{return false;

}

}

}//设置文件操作目录

ftp.changeWorkingDirectory(storePath);//设置文件类型,二进制

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//设置缓冲区大小

ftp.setBufferSize(3072);//上传文件

result =ftp.storeFile(fileName, is);//关闭输入流

is.close();//登出服务器

ftp.logout();

}catch(IOException e) {

e.printStackTrace();

}finally{try{//判断输入流是否存在

if (null !=is) {//关闭输入流

is.close();

}//判断连接是否存在

if(ftp.isConnected()) {//断开连接

ftp.disconnect();

}

}catch(IOException e) {

e.printStackTrace();

}

}returnresult;

}/*** 从FTP服务器下载文件至本地

*

*@paramurl 服务器IP地址

*@paramport 服务器端口

*@paramuserName 用户登录名

*@parampassword 用户登录密码

*@paramremotePath 服务器文件存储路径

*@paramfileName 服务器文件存储名称

*@paramlocalPath 本地文件存储路径

*@returntrue:下载成功

*

* false:下载失败*/

public static boolean retrieveFile(String url, intport, String userName, String password, String remotePath, String fileName, String localPath) {boolean result = false;

FTPClient ftp= newFTPClient();

OutputStream os= null;try{//连接至服务器,端口默认为21时,可直接通过URL连接

ftp.connect(url, port);//登录服务器

ftp.login(userName, password);//判断返回码是否合法

if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {//不合法时断开连接

ftp.disconnect();//结束程序

returnresult;

}//设置文件操作目录

ftp.changeWorkingDirectory(remotePath);//设置文件类型,二进制

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//设置缓冲区大小

ftp.setBufferSize(3072);//设置字符编码

ftp.setControlEncoding("UTF-8");//构造本地文件对象

File localFile = new File(localPath + "/" +fileName);//获取文件操作目录下所有文件名称

String[] remoteNames =ftp.listNames();//循环比对文件名称,判断是否含有当前要下载的文件名

for(String remoteName : remoteNames) {if(fileName.equals(remoteName)) {

result= true;

}

}//文件名称比对成功时,进入下载流程

if(result) {//构造文件输出流

os = newFileOutputStream(localFile);//下载文件

result =ftp.retrieveFile(fileName, os);//关闭输出流

os.close();

}//登出服务器

ftp.logout();

}catch(IOException e) {

e.printStackTrace();

}finally{try{//判断输出流是否存在

if (null !=os) {//关闭输出流

os.close();

}//判断连接是否存在

if(ftp.isConnected()) {//断开连接

ftp.disconnect();

}

}catch(IOException e) {

e.printStackTrace();

}

}returnresult;

}/*** 从FTP服务器删除文件

*

*@paramurl 服务器IP地址

*@paramport 服务器端口

*@paramuserName 用户登录名

*@parampassword 用户登录密码

*@paramremotePath 服务器文件存储路径

*@paramfileName 服务器文件存储名称

*@returntrue:删除成功

*

* false:删除失败*/

public static boolean deleteFile(String url, intport, String userName, String password, String remotePath, String fileName) {boolean result = false;

FTPClient ftp= newFTPClient();try{//连接至服务器,端口默认为21时,可直接通过URL连接

ftp.connect(url, port);//登录服务器

ftp.login(userName, password);//判断返回码是否合法

if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {//不合法时断开连接

ftp.disconnect();//结束程序

returnresult;

}//设置文件操作目录

ftp.changeWorkingDirectory(remotePath);//设置文件类型,二进制

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//设置缓冲区大小

ftp.setBufferSize(3072);//设置字符编码

ftp.setControlEncoding("UTF-8");//获取文件操作目录下所有文件名称

String[] remoteNames =ftp.listNames();//循环比对文件名称,判断是否含有当前要下载的文件名

for(String remoteName : remoteNames) {if(fileName.equals(remoteName)) {

result= true;

}

}//文件名称比对成功时,进入删除流程

if(result) {//删除文件

result =ftp.deleteFile(fileName);

}//登出服务器

ftp.logout();

}catch(IOException e) {

e.printStackTrace();

}finally{try{//判断连接是否存在

if(ftp.isConnected()) {//断开连接

ftp.disconnect();

}

}catch(IOException e) {

e.printStackTrace();

}

}returnresult;

}public static void main(String[] args) throwsFileNotFoundException {try{

FileInputStream fis= new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\太行后台socket发送工具1.txt"));

System.out.println(storeFile("10.8.66.22", 21, "admin", "1", "D:\\FTP\\test", UUIDUtils.randomUUID() + ".txt", fis));//File file = new File("D:\\upload\\20191217070411_start.txt");//InputStream is = new FileInputStream(file);//System.out.println(storeFile("10.8.66.22", 21, "admin", "1", "D:\\FTP\\test", "2.txt", is));//System.out.println(retrieveFile("10.8.66.22", 21, "admin", "1", "D:\\FTP\\test", "2.txt", "D:\\upload"));//System.out.println(deleteFile("10.8.66.22", 21, "admin", "1", "D:\\FTP\\test", "2.txt"));

} catch(FileNotFoundException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值