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. Flutter的Appbar

    actions → List一个 Widget 列表,代表 Toolbar 中所显示的菜单,对于常用的菜单,通常使用 IconButton 来表示:对于不常用的菜单通常使用PopupMenuButto ...

  2. Linux 的相关操作

    切换权限   在linux环境下,用户之前的切换使用 “su - name,若要切换到root下面,则使用sudo su 命令即可. 在linux下安装软件,经常就是装完后不知道装到哪里去了 (201 ...

  3. kubernetes资源类别介绍

    类别 名称 资源对象 Pod.ReplicaSet.ReplicationController.Deployment.StatefulSet.DaemonSet.Job.CronJob.Horizon ...

  4. mysql 清除大数据表单

    背景:mysql数据库中有个日志表记录高达800多万,影响了mysql的正常业务访问,现需要清理三个月之前的所有数据,大概600多万(大概13G) 方法一:传统delete from xxx,传统,普 ...

  5. Python实现百度贴吧自动顶贴机

    开发这款小工具,我们需要做一些准备: url.txt:多个需要顶起的帖子地址. reply:多条随机回复的内容. selenium:浏览器自动化测试框架 首先,我们先使用pip完成selenium的安 ...

  6. 常见IT工具软件总结

    1. 阿里云在线迁移服务 2.智能媒体管理 格式转换 业务域名管理 1. 每个业务有一个英文单词, 1. 每个 git 的命名应该是 chgg-业务英文-种类 2. 例如 chgg-plant-api ...

  7. 一、PHP_OSS使用

    一.OSS PHP SDK下载 二.文件目录 三.参考手册快速入门对oss操作 以及到控制台找到相应参数并填写

  8. ES 6 系列 - Promise

    一.含义 是异步编程的一种解决方案,es 6 将其变成了标准. 简单的说是一个容器,里面保存了某个未来才会结束的事件(通常是一个异步操作)的结果.语法上, Promise 是一个对象,从它可以获取异步 ...

  9. 用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则

    转载请注明出处:http://www.codelast.com/ line search(一维搜索,或线搜索)是最优化(Optimization)算法中的一个基础步骤/算法.它可以分为精确的一维搜索以 ...

  10. struts2 的struts.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...