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. java内存模型(转)

    前提知识: Java内存模型(JMM)是一个概念模型,底层是计算机的寄存器.缓存内存.主内存和CPU等.  多处理器环境下,共享数据的交互硬件设备之间的关系: JMM: 从以上两张图中,谈一谈以下几个 ...

  2. [转帖]Gartner预测:2019年全球公有云规模达2143亿美元

    Gartner预测:2019年全球公有云规模达2143亿美元 https://news.cnblogs.com/n/623341/ 近日,全球领先的信息技术研究和顾问公司 Gartner 发布的最新数 ...

  3. Vagrant系列(二)----Vagrant的配置文件Vagrantfile详解

    一.简介 在我们的工作目录下有一个Vagrantfile文件,里面包含有大量的配置信息,通过它可以定义虚拟机的各种配置,如网络.内存.主机名等,主要包括三个方面的配置,虚拟机的配置.SSH配置.Vag ...

  4. 关于 html input标签的几个常用操作

    1.清除 input 标签默认样式 input { -moz-appearance: none; outline: 0; text-decoration: none; outline: none; b ...

  5. mysql修改默认端口号后从windows命令行登录

    mysql -u root -p -P 大写的P代表端口号,小写的p代表密码

  6. j收集ava面试题

    史上最全Java面试题(带全部答案) https://blog.csdn.net/linzhiqiang0316/article/details/80473906

  7. Socket构造但不连接

    Socket socket = new Socket(); SocketAddress address = new InetSocketAddress("localhost",80 ...

  8. WPF实现Windows资源管理器(附源码)

      今天我来写一篇关于利用WPF来实现Windows的资源管理器功能,当然只是局部实现这个功能,因为在很多时候我们需要来实现对本机资源的管理,当然我们可以使用OpenFileDialog dialog ...

  9. css繼承

    概念:就是上級設置了css屬性,下級默認有同樣的樣式,如果下級需要不一樣的樣式,那麼就需要單獨對下級設置. 範圍: font-family:字體 font-weight:粗細 font-size:尺寸 ...

  10. DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例

    本文已收录至:开源 DotNetty 实现的 Modbus TCP/IP 协议 ModbusFunction 类图如下: 如前文所述,所有请求/相应的 PDU 均继承自 ModbusFunction, ...