ftp sun jdk自带
package com.italktv.colnv.stat.util; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.text.SimpleDateFormat; import sun.net.ftp.FtpClient;
import sun.net.ftp.FtpProtocolException; /** * * @author 皮锋 java自带的API对FTP的操作 * */
public class FtpUtil {
// FTP客户端
private FtpClient ftpClient; /**
* * 服务器连接 * * @param ip * 服务器IP * @param port * 服务器端口 * @param user * 用户名 * @param
* password * 密码 * @param path * 服务器路径
*/
public void connectServer(String ip, int port, String user, String password, String path) {
try {
ftpClient = FtpClient.create();
try {
SocketAddress addr = new InetSocketAddress(ip, port);
this.ftpClient.connect(addr);
this.ftpClient.login(user, password.toCharArray());
System.out.println("login success!");
ftpClient.setBinaryType();
ftpClient.enablePassiveMode(true);
if (path.length() != 0) {
// 把远程系统上的目录切换到参数path所指定的目录
this.ftpClient.changeDirectory(path);
}
} catch (FtpProtocolException e) {
e.printStackTrace();
}
} catch (IOException ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
} /**
* 上传文件 *
*
* @param localFile
* * 本地文件 * @param remoteFile * 远程文件
*/
public void upload(String localFile, String remoteFile) {
//this.localFilename = localFile;
//this.remoteFilename = remoteFile;
OutputStream os = null;
FileInputStream is = null;
try {
try {
// 将远程文件加入输出流中
os = this.ftpClient.putFileStream(remoteFile);
} catch (FtpProtocolException e) {
e.printStackTrace(); }
// 获取本地文件的输入流
File file_in = new File(localFile);
is = new FileInputStream(file_in); // 创建一个缓冲区
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
System.out.println("upload success");
} catch (IOException ex) {
System.out.println("not upload");
ex.printStackTrace();
throw new RuntimeException(ex);
} finally {
try {
if (is != null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} /**
* 文件下载 *
*
* @param remoteFile
* * 远程文件 * @param localFile * 本地文件
*/
public void download(String remoteFile, String localFile) {
InputStream is = null; FileOutputStream os = null;
try {
try {
// 获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地
is = this.ftpClient.getFileStream(remoteFile);
} catch (FtpProtocolException e) {
e.printStackTrace();
}
File file_in = new File(localFile);
os = new FileOutputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
System.out.println("download success");
} catch (IOException ex) {
System.out.println("not download");
ex.printStackTrace();
throw new RuntimeException(ex);
} finally {
try {
if (is != null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} /**
* 关闭连接
*/
public void closeConnect() {
try {
this.ftpClient.close();
System.out.println("disconnect success");
} catch (IOException ex) {
System.out.println("not disconnect");
ex.printStackTrace();
throw new RuntimeException(ex);
}
} public static void main(String agrs[]) {
FtpUtil fu = new FtpUtil();
/* * 使用默认的端口号、用户名、密码以及根目录连接FTP服务器 */
fu.connectServer("upload.dreamstime.com", 21, "369605", "enigma", "/"); // String filepath[] = { "AWC1002972G020-1.dwg", "AWC1002974G020-1.cgm" };
// String localfilepath[] = { "D:\\AWC1002972G020-1.dwg", "D:\\AWC1002974G020-1.cgm" };
// // 下载
// for (int i = 0; i < filepath.length; i++) {
// fu.download(filepath[i], localfilepath[i]);
// } String localfile = "h:\\view.jpg";
String remotefile = "view.jpg"; // 上传
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sDateFormat.format(new java.util.Date())); // new Date()为获取当前系统时间
fu.upload(localfile, remotefile);
System.out.println(sDateFormat.format(new java.util.Date())); // new Date()为获取当前系统时间
fu.closeConnect();
}
}
ftp sun jdk自带的更多相关文章
- 使用JDK自带的visualvm进行性能监测和调优
使用JDK自带的visualvm进行性能监测和调优 1.关于VisualVm工具 VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 J ...
- 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- jdk自带的MD5进行数据的加密与解密
package com.tools.util; import java.io.IOException; import java.io.UnsupportedEncodingException; imp ...
- [转]JDK自带工具之问题排查场景示例
最近看到了大量关于java性能调优.故障排查的文章,自己也写了一篇Java调优经验谈.接着此篇文章,其实一直打算写写一些常用调优工具以及它们的惯常用法的.后来在http://java-performa ...
- 011 - JDK自带的性能监控工具
一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id jstack 查看Java线程 jstack -l pid; 做thread du ...
- JDK自带工具之问题排查场景示例
最近看到了大量关于java性能调优.故障排查的文章,自己也写了一篇< Java调优经验谈 >.接着此篇文章,其实一直打算写写一些常用调优工具以及它们的惯常用法的.后来在http://jav ...
- jdk自带监控程序jvisualvm的使用
监控小程序的配置 生产环境tomcat的配置 编辑应用所在的tomcat服务器下的bin目录下的catalina.sh文件,修改如下: 配置如下内容: export JAVA_OPTS="- ...
- 连接ftp服务器 JDK 1.7
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...
- 利用JDK自带工具监控JVMCPU和内存指标
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
随机推荐
- mybatis数据源与连接池
1.概念介绍1.1 数据源:顾名思义,数据的来源,它包含了数据库类型信息,位置和数据等信息,一个数据源对应一个数据库. 1.2 连接池:在做持久化操作时,需要通过数据库连接对象来连接数据库,而连接池就 ...
- Java8 Hash改进/内存改进
又开新坑o(*≧▽≦)ツ讲讲几个Java版本的特性,先开始Java8, HashMap的改进 HashMap采用哈希算法,先使用hashCode()判断哈希值是否相同,如果相同,再使用equals() ...
- 前K个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], ...
- 如何建立一个WCF服务并将其发布到IIS上
在我们的软件开发中,经常会连接到数据库中,如果是常规的操作,我们经常会将连接数据库的字符串写在配置文件中,然后去读取数据库的连接字符串,其实这种方式是非常不科学的,这会直接暴露我们的数据库,直接暴露我 ...
- web浏览器兼容问题
1.居中问题 div中,ie默认居中,而ff(firefox)默认是向左对齐.解决办法:margin 0 auto 2.高度问题 如果有两个div排列或者嵌套,如果第一个div设置了高度,而内容超出d ...
- 用于Azure功能的Visual Studio 2017工具
今天我们很高兴地宣布发布第一个预览的Visual Studio 2017工具的Azure功能.这个预览介绍了一些令人兴奋的变化,我们以前的版本.此外,除了支持Visual Studio 2017之外, ...
- codeforces493B
Vasya and Wrestling CodeForces - 493B Vasya has become interested in wrestling. In wrestling wrestle ...
- 从身份证号码中获取性别、出生日期、籍贯,并更新mongodb
有这样的需求,人员信息是存在mongodb中,需要存放人员的身份证.性别.出生日期.籍贯等信息.通过脚本导入这些信息,但是只导入了身份证号码,其他信息空缺.现在需要补全其他信息. 其实身份证信息就包含 ...
- Nginx 模块分类
L:34
- 在一台服务器上配置多个Tomcat的方法
原文来自:http://blog.csdn.net/lmb55/article/details/49561669 这段时间在开发智能导航的热部署功能,需要从一台服务器去访问其它的24台服务器去进行相关 ...