这里仅仅是对ftp工具类的简单使用,很多东西还不是很了解。当然学以致用,先用到这里吧。

  1. public class FtpTest {
  2. /**
  3. * 向ftp写文件(数据)
  4. */
  5. @Test
  6. public void uploadFile() {
  7. // 要写入的文件内容
  8. String fileContent = "hello world,你好世界";
  9. // ftp登录用户名
  10. String userName = "admin";
  11. // ftp登录密码
  12. String userPassword = "xxxx";
  13. // ftp地址
  14. String server = "127.0.0.1";//直接ip地址
  15. // 创建的文件
  16. String fileName = "ftp.txt";
  17. // 指定写入的目录
  18. String path = "wd";
  19. FTPClient ftpClient = new FTPClient();
  20. try {
  21. InputStream is = null;
  22. // 1.输入流
  23. is = new ByteArrayInputStream(fileContent.getBytes());
  24. // 2.连接服务器
  25. ftpClient.connect(server);
  26. // 3.登录ftp
  27. ftpClient.login(userName, userPassword);
  28. // 4.指定写入的目录
  29. ftpClient.changeWorkingDirectory(path);
  30. // 5.写操作
  31. ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
  32. ftpClient.storeFile(new String(fileName.getBytes("utf-8"),
  33. "iso-8859-1"), is);
  34. is.close();
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. } finally {
  38. if (ftpClient.isConnected()) {
  39. try {
  40. ftpClient.disconnect();
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. }
  46. }
  47. /**
  48. * ftp下载数据
  49. */
  50. @Test
  51. public void downFile() {
  52. // ftp登录用户名
  53. String userName = "admin";
  54. // ftp登录密码
  55. String userPassword = "xxxx";
  56. // ftp地址:直接IP地址
  57. String server = "xxxx";
  58. // 创建的文件
  59. String fileName = "ftp.txt";
  60. // 指定写入的目录
  61. String path = "wd";
  62. // 指定本地写入文件
  63. String localPath="D:\\";
  64. FTPClient ftp = new FTPClient();
  65. try {
  66. int reply;
  67. //1.连接服务器
  68. ftp.connect(server);
  69. //2.登录服务器 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
  70. ftp.login(userName, userPassword);
  71. //3.判断登陆是否成功
  72. reply = ftp.getReplyCode();
  73. if (!FTPReply.isPositiveCompletion(reply)) {
  74. ftp.disconnect();
  75. }
  76. //4.指定要下载的目录
  77. ftp.changeWorkingDirectory(path);// 转移到FTP服务器目录
  78. //5.遍历下载的目录
  79. FTPFile[] fs = ftp.listFiles();
  80. for (FTPFile ff : fs) {
  81. //解决中文乱码问题,两次解码
  82. byte[] bytes=ff.getName().getBytes("iso-8859-1");
  83. String fn=new String(bytes,"utf8");
  84. if (fn.equals(fileName)) {
  85. //6.写操作,将其写入到本地文件中
  86. File localFile = new File(localPath + ff.getName());
  87. OutputStream is = new FileOutputStream(localFile);
  88. ftp.retrieveFile(ff.getName(), is);
  89. is.close();
  90. }
  91. }
  92. ftp.logout();
  93. } catch (IOException e) {
  94. e.printStackTrace();
  95. } finally {
  96. if (ftp.isConnected()) {
  97. try {
  98. ftp.disconnect();
  99. } catch (IOException ioe) {
  100. }
  101. }
  102. }
  103. }
  104. }
 

很多知识点是相互联系的,希望以后的例子中能够结合更多的知识点进行实例编写,这样也有助于知识的巩固。

下面是我自己项目中用到的代码

 /**
* 下载pdf文件
*/
public String downLoadPdf(String url,String contNo,String localPdfName){
String newUrl="";
String pathUrl="172.18.100.165"; //FTP服务器hostname
int port=21;//FTP服务器端口
String username="shwasextt20\\ftp"; //FTP登录账号
String password="qwerty1!"; //FTP登录密码
String remotePath="/Imagedownload";//FTP服务器上的相对路径
String fileName;//要下载的文件名
// String localPath="I:\\2015\\workspace\\workspace_newng\\wj\\WebContent\\wwwroot\\ng\\downLoad";//下载后保存到本地的路径
String localPath="C:\\project\\b2c\\cms.ear\\cms.war\\wwwroot\\ng\\downLoad";//下载后保存到本地的路径
// String localPath="C:\\B2C\\cms.ear\\cms.war\\wwwroot\\ng\\downLoad";//下载后保存到本地的路径
String localName = ""; Date date = new Date();
SimpleDateFormat dr = new SimpleDateFormat("yyyyMMddHHmmss"); //重命名(保单号+时间)
localName = localPdfName; if(!"".equals(url) && url !=null){
// String backUrl = "ftp://172.18.100.165/Imagedownload/0180050037-个险合同-电子合同-201537071208(66e735db-8ddf-4e0e-b70c-339544ff630b).PDF";
fileName = url.split("/")[4];
pathUrl = url.split("/")[2]; //生产环境ftp判断
if("172.16.252.100".equals(pathUrl)){
username = "shwasextp20\\ftp";
}else if("172.16.252.110".equals(pathUrl)){
username = "shwasextp21\\ftp";
}else{
username = "shwasextt20\\ftp";
} FTPClient ftp = new FTPClient();
try {
ftp.connect(pathUrl,port);
ftp.login(username,password);
System.out.println(ftp.isConnected());
ftp.enterLocalPassiveMode();
ftp.setControlEncoding("GBK");
ftp.setFileType(ftp.BINARY_FILE_TYPE);
ftp.changeWorkingDirectory(remotePath);
OutputStream outputStream = null;
FTPFile[] fs = ftp.listFiles();
for (int i = 0; i < fs.length; i++) {
FTPFile ff = fs[i];
if (ff.getName().equals(fileName)) {
InputStream in = ftp.retrieveFileStream(new String(ff.getName().getBytes("GBK"), "ISO-8859-1"));
int len = 0;
long size = 0;
byte[] bt = new byte[1024];
outputStream=new BufferedOutputStream(new FileOutputStream(localPath+"\\"+localName+".pdf"));
while ((len = in.read(bt)) > 0) { outputStream.write(bt, 0, len); // outputStream.flush();
size = size + len; // System.out.println(fileName + "已xiazai :" + size); }
newUrl = "cms/wwwroot/ng/downLoad/"+localName+".pdf";
outputStream.flush();
} }
outputStream.close();
ftp.logout();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return newUrl; }

Java实现对ftp的读写文件的更多相关文章

  1. Java实现对zip和rar文件的解压缩

    通过java实现对zip和rar文件的解压缩

  2. java代码实现ftp服务器的文件上传和下载

    java代码实现文件上传到ftp服务器: 1:ftp服务器安装: 2:ftp服务器的配置: 启动成功: 2:客户端:代码实现文件的上传与下载: 1:依赖jar包: 2:sftpTools   工具类: ...

  3. 使用POI来实现对Excel的读写操作

    事实上我感觉直接贴代码就好了.代码里面差点儿做到每一行一个凝视.应该看起来会比較简单 代码托管在github上:https://github.com/chsj1/ExcelUtils package ...

  4. java使用类序列化反序列化(读写文件)

    创建类:Role package com.wbg.springRedis.entity; import java.io.Serializable; public class Role implemen ...

  5. 使用jxl操作之一: 实现对Excel简单读写操作

    项目目录树 对象类UserObject UserObject.java package com.dlab.jxl; public class UserObject { private String u ...

  6. Java实现对Mysql的图片存取操作

    1.MySQL中的BLOB类型 Mysql中可以存储大文件数据,一般使用的BLOB对象.如图片,视频等等. BLOB是一个二进制大对象,可以容纳可变数量的数据.因为是二进制对象,所以与编码方式无关.有 ...

  7. Java 实现对Sql语句解析

    原文地址:http://www.cnblogs.com/zcftech/archive/2013/06/10/3131286.html 最近要实现一个简易的数据库系统,除了要考虑如何高效的存储和访问数 ...

  8. Java实现对List去重

    方式一,使用for循环遍历去除List中的重复元素代码如下 public static void main(String[] args) { Test07 test07 = new Test07(); ...

  9. Java实现对cookie的增删改查

    原文地址:http://blog.csdn.net/k21325/article/details/54377830 @RequestMapping(value="meeting/addGua ...

随机推荐

  1. 安装MySQL时出现黄色感叹号,提示3306已被占用

    windows系统如何查看现在某个端口的应用进程id呢,命令是: 1.netstat  -aon|findstr 3306 2.最后的那个数值就是进程id号,此时需要查看该id号对应的应用是哪一个,可 ...

  2. Android BroadcastReceiver 的简单实现

    参考:http://yangguangfu.iteye.com/blog/1063732 BroadcastReceiver的实现不难,其实就是三部曲:注册,接收,发送. 但有一点较疑惑的是:当我启动 ...

  3. Java 8 新特新 工具类 ZonedDateTime

    类ZonedDateTime java.lang.Object继承 java.time.ZonedDateTime 所有实现的接口: Serializable,Comparable < Chro ...

  4. JPA with Hibernate implementation

    https://code.google.com/p/jpa-basics-tutorial/source/checkout http://alextretyakov.blogspot.com/2013 ...

  5. manjaro i3 配置笔记

    更改国内源 sudo pacman-mirrors -GB testing -c China 增加Arch linuxcn源 在/etc/pacman.conf文件末尾添加两行: [archlinux ...

  6. 最长无重复字符的子串 · Longest Substring Without Repeating Characters

    [抄题]: 给定一个字符串,请找出其中无重复字符的最长子字符串. 例如,在"abcabcbb"中,其无重复字符的最长子字符串是"abc",其长度为 3. 对于, ...

  7. ADF控件ID变化引发JS无法定位控件的解决方法

    原文地址:ADF控件ID变化引发JS无法定位控件的解决方法作者:Nicholas JSFF定义的控件ID到了客户端时往往会改变.例如在JSFF中的一个的ID为"ot1",但是当这个 ...

  8. adf 日志输出

    1,选中ViewController或是Model,在属性框中,做如下配置,run/debug后可以看到日志信息中,将adf的整个执行过程很详细的打印出来了. 在每个项目的Project proper ...

  9. SpringMVC框架结构的图解、架构的处理流程以及三大组件的说明和使用

    1.1 框架结构 1.2 架构流程 1.用户发送请求至前端控制器DispatcherServlet: 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器: 3. ...

  10. Halcon中xld的常见特征的含义总结

    如下图: