测试的环境一般都是在自己电脑上面装的,现在一般都使用Win10开发

搭建FTP:

第一步:打开控制面板:点击程序

第二步:

第三步:

然后点击确认后等待完成

完成后在启动中找到IIS管理器

打开

在网站上右击,添加FTP站点

配置FTP名称并,设置文件夹

设置IP,端口,和SSL证书,一般自己测试是没有证书的,就点击无

配置身份认证和授权,然后点击完成

可以看到已经已启动了,

然后去测试一下是否可以使用

在文件夹地址栏上输入ftp://ip访问

可以看到是可以使用的

然后开始写测试代码

首先需要导入

common-net包,我使用的是Maven项目直接配置依赖

  1. <dependency>
  2. <groupId>commons-net</groupId>
  3. <artifactId>commons-net</artifactId>
  4. <version>3.3</version>
  5. </dependency>

创建一个测试文件

文件内容

然后写代码,公共代码部分大家可以自己抽取,因为是测试demo我就没有抽取了

  1. package utils;
  2.  
  3. import org.apache.commons.net.ftp.FTPClient;
  4. import org.apache.commons.net.ftp.FTPFile;
  5. import org.apache.commons.net.ftp.FTPReply;
  6.  
  7. import java.io.*;
  8.  
  9. /**
  10. * FTP工具类
  11. * @author ZYGisComputer
  12. */
  13. public class FTPUtil {
  14.  
  15. final static String url = "192.168.0.23";
  16.  
  17. final static int port = 21;
  18.  
  19. final static String username = "电脑用户名";
  20.  
  21. final static String password = "密码";
  22.  
  23. final static String path = "F:\\FTP";
  24.  
  25. final static String filename = "test.txt";
  26.  
  27. final static String remotePath = "\\";
  28.  
  29. public static void main(String[] args) throws FileNotFoundException {
  30.  
  31. InputStream in = new FileInputStream(new File("E:\\dance\\oracle\\src\\main\\resources\\FTP\\test.txt"));
  32.  
  33. // 测试上传
  34. // boolean b = uploadFile(url, port, username, password, path, filename, in);
  35.  
  36. // System.out.println(b);
  37.  
  38. // 测试下载
  39. boolean b = downloadFile(url, port, username, password, remotePath, filename, "E:\\dance\\oracle\\src\\main\\resources\\download");
  40.  
  41. System.out.println(b);
  42.  
  43. // 测试删除
  44. // boolean b = deleteFtpFile(url, port, username, password, remotePath, filename);
  45.  
  46. // System.out.println(b);
  47.  
  48. }
  49.  
  50. /**
  51. * Description: 向FTP服务器上传文件
  52. * @param url FTP服务器hostname
  53. * @param port FTP服务器端口,如果默认端口请写-1
  54. * @param username FTP登录账号
  55. * @param password FTP登录密码
  56. * @param path FTP服务器保存目录
  57. * @param filename 上传到FTP服务器上的文件名
  58. * @param input 输入流
  59. * @return 成功返回true,否则返回false
  60. */
  61. public static boolean uploadFile(String url, int port, String username, String password, String path,
  62. String filename, InputStream input)
  63. {
  64. boolean success = false;
  65. FTPClient ftp = new FTPClient();
  66. try
  67. {
  68. int reply;
  69.  
  70. // 连接FTP服务器
  71. if (port > -1)
  72. {
  73. ftp.connect(url, port);
  74. }
  75. else
  76. {
  77. ftp.connect(url);
  78. }
  79.  
  80. // 登录FTP
  81. ftp.login(username, password);
  82. reply = ftp.getReplyCode();
  83. if (!FTPReply.isPositiveCompletion(reply))
  84. {
  85. ftp.disconnect();
  86. return success;
  87. }
  88. ftp.changeWorkingDirectory(path);
  89. ftp.storeFile(filename, input);
  90.  
  91. input.close();
  92. ftp.logout();
  93. success = true;
  94. }
  95. catch (IOException e)
  96. {
  97. e.printStackTrace();
  98. }
  99. finally
  100. {
  101. if (ftp.isConnected())
  102. {
  103. try
  104. {
  105. ftp.disconnect();
  106. }
  107. catch (IOException e)
  108. {
  109. e.printStackTrace();
  110. }
  111. }
  112. }
  113. return success;
  114. }
  115.  
  116. /**
  117. * Description: 从FTP服务器下载文件
  118. * @Version1.0 Jul 27, 2008 5:32:36 PM by 崔红保(cuihongbao@d-heaven.com)创建
  119. * @param url FTP服务器hostname
  120. * @param port FTP服务器端口
  121. * @param username FTP登录账号
  122. * @param password FTP登录密码
  123. * @param remotePath FTP服务器上的相对路径
  124. * @param fileName 要下载的文件名
  125. * @param localPath 下载后保存到本地的路径
  126. * @return
  127. */
  128. public static boolean downloadFile(String url, int port, String username, String password, String remotePath,
  129. String fileName, String localPath)
  130. {
  131. boolean success = false;
  132. FTPClient ftp = new FTPClient();
  133. try
  134. {
  135. int reply;
  136.  
  137. // 连接FTP服务器
  138. if (port > -1)
  139. {
  140. ftp.connect(url, port);
  141. }
  142. else
  143. {
  144. ftp.connect(url);
  145. }
  146.  
  147. ftp.login(username, password);//登录
  148. reply = ftp.getReplyCode();
  149. if (!FTPReply.isPositiveCompletion(reply))
  150. {
  151. ftp.disconnect();
  152. return success;
  153. }
  154. ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
  155. FTPFile[] fs = ftp.listFiles();
  156. for (FTPFile ff : fs)
  157. {
  158. if (ff.getName().equals(fileName))
  159. {
  160. File localFile = new File(localPath + "/" + ff.getName());
  161.  
  162. OutputStream is = new FileOutputStream(localFile);
  163. ftp.retrieveFile(ff.getName(), is);
  164. is.close();
  165. }
  166. }
  167.  
  168. ftp.logout();
  169. success = true;
  170. }
  171. catch (IOException e)
  172. {
  173. e.printStackTrace();
  174. }
  175. finally
  176. {
  177. if (ftp.isConnected())
  178. {
  179. try
  180. {
  181. ftp.disconnect();
  182. }
  183. catch (IOException e)
  184. {
  185. e.printStackTrace();
  186. }
  187. }
  188. }
  189. return success;
  190. }
  191.  
  192. /**
  193. * <删除FTP上的文件>
  194. * <远程删除FTP服务器上的录音文件>
  195. * @param url FTP服务器IP地址
  196. * @param port FTP服务器端口
  197. * @param username FTP服务器登录名
  198. * @param password FTP服务器密码
  199. * @param remotePath 远程文件路径
  200. * @param fileName 待删除的文件名
  201. * @return
  202. * @see [类、类#方法、类#成员]
  203. */
  204. public static boolean deleteFtpFile(String url, int port, String username, String password, String remotePath,
  205. String fileName)
  206. {
  207. boolean success = false;
  208. FTPClient ftp = new FTPClient();
  209. try
  210. {
  211. int reply;
  212.  
  213. // 连接FTP服务器
  214. if (port > -1)
  215. {
  216. ftp.connect(url, port);
  217. }
  218. else
  219. {
  220. ftp.connect(url);
  221. }
  222.  
  223. // 登录
  224. ftp.login(username, password);
  225. reply = ftp.getReplyCode();
  226. if (!FTPReply.isPositiveCompletion(reply))
  227. {
  228. ftp.disconnect();
  229. return success;
  230. }
  231.  
  232. // 转移到FTP服务器目录
  233. ftp.changeWorkingDirectory(remotePath);
  234. success = ftp.deleteFile(remotePath + "/" + fileName);
  235. ftp.logout();
  236. }
  237. catch (IOException e)
  238. {
  239. e.printStackTrace();
  240. success = false;
  241. }
  242. finally
  243. {
  244. if (ftp.isConnected())
  245. {
  246. try
  247. {
  248. ftp.disconnect();
  249. }
  250. catch (IOException e)
  251. {
  252. e.printStackTrace();
  253. }
  254. }
  255. }
  256. return success;
  257. }
  258.  
  259. }

代码写完开始测试:

测试上传:

执行结果:

  1. true

查看文件夹:

上传成功

测试下载:

执行结果:

  1. true

查看文件夹:

下载成功

测试删除:

执行结果:

  1. true

查看文件夹

删除成功

到此java操作FTP完成,如果要用到项目中可以稍作修改即可

作者:彼岸舞

时间:2020\09\24

内容关于:工作中用到的小技术

本文来源于网络,只做技术分享,一概不负任何责任

Win10 搭建FTP环境,并使用Java实现上传,下载,删除的更多相关文章

  1. [java]文件上传下载删除与图片预览

    图片预览 @GetMapping("/image") @ResponseBody public Result image(@RequestParam("imageName ...

  2. 2013第38周日Java文件上传下载收集思考

    2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...

  3. java FTP 上传下载删除文件

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...

  4. java操作FTP,实现文件上传下载删除操作

    上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...

  5. 使用C#WebClient类访问(上传/下载/删除/列出文件目录)由IIS搭建的http文件服务器

    前言 为什么要写这边博文呢?其实,就是使用C#WebClient类访问由IIS搭建的http文件服务器的问题花了我足足两天的时间,因此,有必要写下自己所学到的,同时,也能让广大的博友学习学习一下. 本 ...

  6. java文件上传下载组件

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  7. java中文上传下载功能实现(自己测试项目)

    1.新建maven项目打war包 2.搭建springMVC框架 web.xml文件配置 <?xml version="1.0" encoding="UTF-8&q ...

  8. Linux shell:FTP(文件传输协议)上传下载命令

    SecureCRT通过ftp将nmon上传,建立一个目录,用命令上传文件.[命令见下面] 或通过UE.SSH上传/下载,使用sftp建立链接. [通过cmd进入ftp服务器]先假设有一FTP服务器,F ...

  9. Java Sftp上传下载文件

    需要使用jar包  jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import ja ...

随机推荐

  1. 微信小程序发送订阅消息(之前是模板消息)

    之前的模板消息已经废弃,现在改为订阅消息,订阅消息发布前,需要用户确认后才能接收订阅消息. 小程序端 index.wxml <button bindtap="send"> ...

  2. soso官方:基于相关排序的判断

    http://www.wocaoseo.com/thread-186-1-1.html 议程 概述 检索词 用户的信息需求 网页的自有信息 网页的附属信息 相关性的计算框架 概述 相关性的表象 检索词 ...

  3. UTF-8、GB2312、GBK编码格式详解和编码示例

    UTF-8.GB2312.GBK编码格式详解 参考文章 UTF-8 使用1~4个字节对每个字符进行编码 128个ASCII字符字需要一个字节编码 带有附加符号的拉丁文.希腊文.西里尔字母.亚美尼亚语. ...

  4. JS开发必须知道的41个技巧

    JS是前端的核心,但有些使用技巧你还不一定知道:本文梳理了JS的41个技巧,帮助大家提高JS的使用技巧: Array 1.数组交集 普通数组 const arr1 = [, , , , , ,],ar ...

  5. 读Twinsen的深入探索透视投影变换

    2017.10.16更新,分割线下面是以前的文字,有表达的意思,却言不达意,实属羞耻,看官只需看前面文字即可. Twinsen大神的<深入探索透视投影变换>有几个点说得不够清晰,我这里提一 ...

  6. 使用Vagrant 后发现虚拟机磁盘空间爆满的血泪填坑记

      现象:  用了几天vagrant后,发现docker 里的 Mysql5.7 服务无法启动,用docker ps 命令,发现mysql一直在反复重启, 查看mysql log 发现说磁盘空间不够, ...

  7. OpenShift Container Platform 4.3.0部署实录

    本文参照红帽官方文档,在裸机安装Openshift4.3文档进行.因为只有一台64G内存的PC机,安装vmware vsphere 6.7免费版进行本测试,所以尝试在OCP官方文档要求的最低内存需求基 ...

  8. nginx系列(七)静态文件合并combo

    根据雅虎性能优化准则,可以将大量的小型JS文件进行合并,用来提高WEB服务器的性能.下面就是笔者的一个实践. 目前必须安装在1.4.+才可以 官方:http://wiki.nginx.org/Http ...

  9. 案例:ADG环境遇到redo日志member路径有误以及RMAN-6571错误

    最近先后帮客户做了两套从虚拟化环境到物理机的数据库迁移,都是Linux系统,Oracle 11.2.0.4的RAC,最终选定ADG方案实现迁移,简单高效. 在之前的文章Oracle 11g ADG 部 ...

  10. 用命令方式启动、停止appium服务和app

    启动appium服务并监听一个端口命令: 命令command==> appium -a {ip} -p {port} -U {deviceName} -g {log} 以shell命令方式执行命 ...