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自带的更多相关文章

  1. 使用JDK自带的visualvm进行性能监测和调优

    使用JDK自带的visualvm进行性能监测和调优   1.关于VisualVm工具  VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 J ...

  2. 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行

    利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...

  3. jdk自带的MD5进行数据的加密与解密

    package com.tools.util; import java.io.IOException; import java.io.UnsupportedEncodingException; imp ...

  4. [转]JDK自带工具之问题排查场景示例

    最近看到了大量关于java性能调优.故障排查的文章,自己也写了一篇Java调优经验谈.接着此篇文章,其实一直打算写写一些常用调优工具以及它们的惯常用法的.后来在http://java-performa ...

  5. 011 - JDK自带的性能监控工具

      一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id   jstack 查看Java线程      jstack -l pid; 做thread du ...

  6. JDK自带工具之问题排查场景示例

    最近看到了大量关于java性能调优.故障排查的文章,自己也写了一篇< Java调优经验谈 >.接着此篇文章,其实一直打算写写一些常用调优工具以及它们的惯常用法的.后来在http://jav ...

  7. jdk自带监控程序jvisualvm的使用

    监控小程序的配置 生产环境tomcat的配置 编辑应用所在的tomcat服务器下的bin目录下的catalina.sh文件,修改如下: 配置如下内容: export JAVA_OPTS="- ...

  8. 连接ftp服务器 JDK 1.7

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...

  9. 利用JDK自带工具监控JVMCPU和内存指标

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

随机推荐

  1. Ajax发送请求等待时弹出模态框等待提示

    主要的代码分为两块,一个是CSS定义模态框,另一个是在Ajax中弹出模态框. 查看菜鸟教程中的模态框教程demo,http://www.runoob.com/try/try.php?filename= ...

  2. Day 5-5 绑定方法与非绑定方法

    绑定方法与非绑定方法: 在类内部定义的绑定方法,分两大类: classmehtod是给类用的,即绑定到类,类在使用时会将类本身当做参数传给类方法的第一个参数(即便是对象来调用也会将类当作第一个参数传入 ...

  3. mac 中登陆mysql忘记密码解决办法

    1.打开终端,输入命令:cd /usr/local/mysql/bin 2.mysql -uroot -p,用这条命令登陆时报错信息: 报错:Enter password: ERROR 1045 (2 ...

  4. fastclick的介绍和使用

    移动端点击延迟事件 1. 移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟 2. 原因: 移动端的双击会缩放导致click判断延迟 解决方式 1. 禁用缩放 `<meta nam ...

  5. zabbix-2.4.5的安装配置与使用

    系统最小化安装 环境: zabbix_server     12.1.1.1 zabbix_agent     12.1.1.2 zabbix_proxy      12.1.1.3 1.安装环境: ...

  6. mongodb3的使用

    1.在windows下载安装mongodb 将下载好的zip压缩文件解压并重命名为mongo-3.0.6,并在根目录下新建文件夹data用于存放数据 2.启动mongod守护进程 使用命令mongod ...

  7. wget 下载网页

    如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ wget --http-user=username --http-passwd=password http:/w ...

  8. 排列组合n选m算法

    找10组合算法,非递归 http://blog.csdn.net/sdhongjun/article/details/51475302

  9. Web API Help Page Install WebApiTestClient 简单的测试客户端

    第一步: 安装the Test Client package 从NuGet安装包管理安装WebApiTestClient . 确保选择 “Include Prerelease” 然后输入 “WebAp ...

  10. [离散时间信号处理学习笔记] 7. z变换

    z变换及其收敛域 回顾前面的文章,序列$x[n]$的傅里叶变换(实际上是DTFT,由于本书把它叫做序列的傅里叶变换,因此这里以及后面的文章也统一称DTFT为傅里叶变换)被定义为 $X(e^{j\ome ...