package com.test;

 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.SocketException;
import java.net.UnknownHostException; import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile; public class FtpClientTest { /**
* @param args
* @throws SocketException
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws SocketException, IOException{
// TODO Auto-generated method stub
String host = "192.168.0.107" ;
String user = "ftpClient" ;
String pass = "ftp123" ;
up(host, 21, user, pass) ;
}
static void load(String host ,int port ,String user ,String pass){
FTPClient client = new FTPClient() ;
try {
client.connect(host,port) ;
boolean flag = client.login(user, pass) ;
if(flag){
/**
* ASCII传输方式 假定用户正在拷贝的文件包含的简单ASCII码文本,
* 如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
* 但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件,这回导致文件损坏
*/
//设置采用二进制传输方式下载,若采用默认的ascii传输方式下载可能导致文件损失
client.setFileType(FTP.BINARY_FILE_TYPE);
//切换当前目录到xx
client.changeWorkingDirectory("/20170806") ;
FTPFile[] ftpFiles = client.listFiles() ;
OutputStream out = null ;
int i = 1 ;
for(FTPFile f:ftpFiles){
File file = new File("G:/ftp/") ;
if(!file.exists())
file.mkdirs() ;
file = new File(file, new String(f.getName().getBytes("iso-8859-1"),"GBK")) ;
out = new FileOutputStream(file) ;
client.retrieveFile(f.getName(), out) ;
out.close() ;
i++ ;
}
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static void up(String host ,int port ,String user ,String pass){
FTPClient client = new FTPClient() ;
try {
client.connect(host,port) ;
boolean flag = client.login(user, pass) ;
if(flag){
client.setFileType(FTP.BINARY_FILE_TYPE);
//切换工作目录
client.changeWorkingDirectory("/20170806") ;
InputStream in = new FileInputStream("E:/周报/个人周报.xlsx") ;
client.storeFile("1234.xlsx", in) ;
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

最新文章

  1. 分享一些自己的学习过程和学习方法(来自daimajia)
  2. 关于若干php 表单 的重新审视
  3. ahjesus code simith 存储过程模板
  4. weapp微信小程序初探demo
  5. SQL时间戳的使用
  6. Tkinter教程之Pack篇
  7. [Hive - LanguageManual] VirtualColumns
  8. JAVA中IO和异常处理练习
  9. iOS Socket第三方开源类库 ----AsyncSocket 分类: ios相关 ios技术 2015-03-11 22:14 59人阅读 评论(0) 收藏
  10. Winform & Devexpress Chart使用入门
  11. 【一天一道LeetCode】#371. Sum of Two Integers
  12. leanote使用本地账户时,去掉待同步的小红点
  13. canvas(一) 基本线条绘制
  14. Set接口——HashSet集合
  15. tornado tcp 框架 demo
  16. tailor 基础模版的使用
  17. Latex使用的注意事项
  18. (转)linux运维必会MySQL企业面试题
  19. 字符串数组中含有json转换
  20. 高性能流媒体服务器EasyDSS前端重构(一)-从零开始搭建 webpack + vue + AdminLTE 多页面脚手架

热门文章

  1. PCIE知识点
  2. 每日英语:Stressed at Work? Reflect on the Positive
  3. 使用Eclipse创建的第一个javabean,cannot resolved to a type
  4. POJ1579:Function Run Fun
  5. layer返璞归真
  6. 手风琴式焦点图jQuery特效
  7. thymeleaf 的hello world
  8. AM335X can驱动移植
  9. uboot中env实现
  10. mac os x10.9.2 查看进程对应端口