- 浏览: 88422 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
yangmeng_3331:
该用户名已存在 写道如果是字符串,是按照 parse 方法中的 ...
javascript时间戳与日期转换 -
该用户名已存在:
如果是字符串,是按照 parse 方法中的规则进行解析。var ...
javascript时间戳与日期转换 -
yangmeng_3331:
shiyiyue513 写道文中有诸多不妥之处。我是初学者,一 ...
Java中的栈,堆和常量池 -
shiyiyue513:
文中有诸多不妥之处。
Java中的栈,堆和常量池
最开始使用jdk自带的rt.jar开发FTP工具类,后来发现中文乱码,本机windows是GBK,工程utf-8的,大概看了下jdk的FtpClient的基类NetworkClient默认输出的编码是ISO8859_1。后来决定使用apache的commons-net.jar来开发。下面是具体代码
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.SocketException; import java.util.TimeZone; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPReply; public class FtpTest { private FTPClient ftpClient; /** * 链接ftp * @param ip 地址 * @param port 端口号 * @param user 用户名 * @param password 密码 * @param path 路径 */ public void connectServer(String ip,int port,String user,String password,String path) { try { this.ftpClient = new FTPClient(); FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_NT);//适用的系统 config.setServerTimeZoneId(TimeZone.getDefault().getID());//获取主机默认时区 this.ftpClient.setControlEncoding("GBK"); this.ftpClient.configure(config); this.ftpClient.connect(ip, port); int reply = this.ftpClient.getReplyCode(); //ftp服务器链接响应,已2开头通过 if(!FTPReply.isPositiveCompletion(reply)) { //响应异常断开连接 System.out.println("链接失败!"); this.ftpClient.disconnect(); } this.ftpClient.login(user, password); this.ftpClient.changeWorkingDirectory(path); this.ftpClient.setFileType(FTPClient.FILE_STRUCTURE);//设置文件传输类型 System.out.println("登陆成功,当前所在目录:"+this.ftpClient.printWorkingDirectory()); } catch (SocketException e) { System.out.println("链接FTP服务器失败!"); e.printStackTrace(); } catch (IOException e) { System.out.println("登陆FTP服务器失败!"); e.printStackTrace(); } } /** * 关闭FTP服务器连接 *@data 2014-6-10 下午1:51:40 */ public void closeFtp() { if(null != this.ftpClient && this.ftpClient.isConnected()) { try { boolean rs = this.ftpClient.logout(); if(rs) { System.out.println("退出并关闭FTP服务器连接!"); } } catch (IOException e) { e.printStackTrace(); System.out.println("退出FTP服务器发生异常!"); } finally { try { this.ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); System.out.println("强制关闭异常的FTP服务器链接!"); } } } } /** * 下载文件,测试通过2GB大小文件,具体看网络环境。 * @param localFilePath 本地路径及文件名 * @param remoteFileName ftp文件目录及文件名,如/test.doc.目录前必须有/否则会找不到文件 * @return */ public boolean downloadFile(String localFilePath, String remoteFileName) { BufferedOutputStream outStream = null; boolean rs = false; try { outStream = new BufferedOutputStream(new FileOutputStream(localFilePath)); rs = this.ftpClient.retrieveFile(remoteFileName, outStream); System.out.println("文件下载成功!"); } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("本地文件未找到!"); } catch (IOException e) { e.printStackTrace(); System.out.println("文件下载发生异常!"); } finally { if(outStream != null) { try { outStream.flush(); outStream.close(); } catch (IOException e) { e.printStackTrace(); System.out.println("文件传输关闭异常!"); } } } return rs; } /** * 下载文件,测试通过2GB大小文件,具体看网络环境。 * @param localFile 本地文件 * @param remoteFileName FTP服务器文件目录及文件名 * @return */ public boolean downloadFile(File localFile, String remoteFileName) { BufferedOutputStream outStream = null; FileOutputStream outStr = null; boolean rs = false; try { outStr = new FileOutputStream(localFile); outStream = new BufferedOutputStream(outStr); rs = this.ftpClient.retrieveFile(remoteFileName, outStream); System.out.println("文件下载成功!"); } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("本地文件未找到!"); } catch (IOException e) { e.printStackTrace(); System.out.println("文件下载发生异常!"); } finally { try { if(null != outStream) { outStream.flush(); outStream.close(); } } catch (Exception e) { e.printStackTrace(); System.out.println("文件传输关闭异常!"); } finally { if (null != outStr) { try { outStr.flush(); outStr.close(); } catch (IOException e) { e.printStackTrace(); System.out.println("文件输出关闭异常!"); } } } } return rs; } /** * 文件上传 * @param localFilePath 文件本地路径 * @param remoteFileName 上传到FTP服务器路径级文件名 * @return */ public boolean uploadFile(String localFilePath, String remoteFileName) { BufferedInputStream inStream = null; boolean rs = false; try { inStream = new BufferedInputStream(new FileInputStream(localFilePath)); rs = this.ftpClient.storeFile(remoteFileName, inStream); System.out.println("文件上传成功!"); } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("本地文件未找到!"); } catch (IOException e) { e.printStackTrace(); System.out.println("文件上传发生异常!"); } finally { if (inStream != null) { try { inStream.close(); } catch (IOException e) { e.printStackTrace(); System.out.println("文件传输关闭异常!"); } } } return rs; } /** * 文件上传 * @param localFile 本地文件 * @param remoteFileName 上传到FTP服务器路径级文件名 * @return */ public boolean uploadFile(File localFile, String remoteFileName) { BufferedInputStream inStream = null; boolean rs = false; try { inStream = new BufferedInputStream(new FileInputStream(localFile)); rs = this.ftpClient.storeFile(remoteFileName, inStream); System.out.println("文件上传成功!"); } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("本地文件未找到!"); } catch (IOException e) { e.printStackTrace(); System.out.println("文件上传发生异常!"); } finally { if (inStream != null) { try { inStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return rs; } /** * 变更工作目录 * @param dir 需变更到的工作目录 */ public void changeDir(String dir) { try { this.ftpClient.changeWorkingDirectory(dir); System.out.println("当前工作目录为:" + dir); } catch (IOException e) { e.printStackTrace(); System.out.println("变更工作目录:" + dir + "时出错!"); } } /** * 返回上级目录 */ public void toParentDir() { try { this.ftpClient.changeToParentDirectory(); System.out.println("成功返回上级目录!"); System.out.println("当前工作目录为:" + this.ftpClient.printWorkingDirectory()); } catch (IOException e) { e.printStackTrace(); System.out.println("返回上级目录时出错!"); } } /** * 查询某目录下所有下文件目录 * @return */ public String[] getListFiles(String path){ String files[] = null; try { if (null == path || "".equals(path)) { path = "/"; } files = this.ftpClient.listNames(path); } catch (IOException e) { e.printStackTrace(); } return files; } public static void main(String[] args) { try { FtpTest ftp = new FtpTest(); ftp.connectServer("192.168.1.133", 21, "ftpAdmin", "admin", "/"); // ftp.downloadFile("d://LOL_V3.1.2.0-V3.1.2.1_PATCH.exe", "/LOL_V3.1.2.0-V3.1.2.1_PATCH.exe"); // ftp.downloadFile(new File("d://test.zip"), "/test.zip"); // ftp.uploadFile("d://test.zip", "/ym/test.zip"); // ftp.uploadFile(new File("d://test.zip"), "/test.zip"); ftp.changeDir("/fasdfasym"); // ftp.toParentDir(); // String[] files = ftp.getListFiles("null"); String[] files = ftp.getListFiles("/ym"); for (String s : files) { System.out.println(s); } ftp.closeFtp(); } catch (Exception e) { e.printStackTrace(); } } }
- jar.zip (2.7 MB)
- 下载次数: 6
发表评论
-
使用Axis2搭建web Service
2014-06-06 09:59 12511、首先下载需要的一些相关axis2.zip及jar包 ... -
使用Axis1搭建web Service
2014-06-05 12:25 618首先创建一个demo,然后建一个AxisService ... -
org.apache.commons.beanutils.PropertyUtils使用
2013-08-06 10:51 1414org.apache.commons.beanutils.Pr ... -
使用apache的ant.jar进行压缩/解压缩文件
2013-06-28 11:43 1998windows系统默认字符集为 ... -
json-lib使用JSONObject与JSONArray
2013-06-08 16:54 8351.从Object到String 要先用Object对象构造 ... -
java字符串与unicode转换
2013-06-07 13:27 688/** * 字符串转化为unicod ... -
给定一个接口返回这个接口所有实现类
2013-02-28 09:15 1803package com.dobn.bdgcgl.test; ... -
单例模式
2013-02-27 16:39 716概念:确保一个类只有一个实例,并提供一个全局访问点来获取该实例 ... -
利用java反射实现两个具有相同属性bean赋值
2012-11-22 16:19 2259package com.dobn.bdgcgl.utils ... -
JPA 实体关系注解
2012-10-15 15:44 15141.单向一对一 @OneToMany( ... -
[转]Hibernate的复杂用法HibernateCallback
2012-09-28 10:26 1218HibernateTemplate还提供一种更加灵活的方式来操 ... -
多线程基础
2012-05-03 00:38 729线程类Thread 方法currentThread()获得一 ... -
Java编程的三十个基本规则
2011-11-15 21:37 658(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母 ... -
Java中的栈,堆和常量池
2011-11-15 21:34 9121.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程 ...
相关推荐
Commons-Lang 提供了许多许多通用的工具类集,提供了一些java.lang中类的扩展功能 Latka Commons-Latka 是一个HTTP 功能测试包,用于自动化的QA,验收和衰减测试. Launcher Launcher 组件是一个交叉平台的Java 应用...
├─28个java常用的工具类 │ │ Base64.java │ │ Base64DecodingException.java │ │ CConst.java │ │ CharTools.java │ │ ConfigHelper.java │ │ Counter.java │ │ CTool.java │ │ DateHandler.java ...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,...
使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,...