1、使用官方正规的jar

commons-net-1.4.1.jar

jakarta-oro-2.0.8.jar

注意:使用ftp从windows服务器下载文件和从linux服务器下载文件不一样

2、用ftp从linux服务器下载文件

System.out.println(new Date()+"  开始进入ftpDownload定时器");

        //ftp服务器登录凭证
String host=PropertiesManager.getProperty("ftpHost");
int port=Integer.parseInt(PropertiesManager.getProperty("ftpPort"));
String user=PropertiesManager.getProperty("ftpUser");
String password=PropertiesManager.getProperty("ftpPassword"); //获取时间字段信息
SimpleDateFormat sdf1=new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=new Date();
String today1 = sdf1.format(date);
String today = sdf.format(date); String txtFileDir="/";
String txtSaveDir="E:/dataCenter/shengzhan/"; //检查本地磁盘目录是否存在txt文件
boolean flag = isTxtExit(today1,txtSaveDir);
System.out.println(new Date()+" 判断txt文件是否存在:"+flag);
FlagUtil.ftpDownloadRunning=true; //讲txt的下载操作和解析操作分成2个独立的操作进行,排除互相间的干扰
if(flag==false)//文件不存在进行ftp下载操作
{
FTPClient ftp=null;
try
{
//ftp的数据下载
ftp=new FTPClient();
ftp.connect(host, port);
ftp.login(user, password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE); //设置linux环境
FTPClientConfig conf = new FTPClientConfig( FTPClientConfig.SYST_UNIX);
ftp.configure(conf); //判断是否连接成功
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
ftp.disconnect();
System.out.println("FTP server refused connection.");
return;
} //设置访问被动模式
ftp.setRemoteVerificationEnabled(false);
ftp.enterLocalPassiveMode(); //检索ftp目录下所有的文件,利用时间字符串进行过滤
boolean dir = ftp.changeWorkingDirectory(txtFileDir);
if (dir)
{
FTPFile[]fs = ftp.listFiles();
for(FTPFile f:fs)
{
if(f.getName().indexOf(today1+"2000")>0)
{
System.out.println(new Date()+" ftpDownload定时器下载txt成功");
File localFile = new File(txtSaveDir+f.getName());
OutputStream ios = new FileOutputStream(localFile);
ftp.retrieveFile(f.getName(), ios);
ios.close();
break;
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
System.out.println(new Date()+" ftp下载txt文件发生错误");
}
finally
{
if(ftp != null) try {ftp.disconnect();} catch (IOException ioe) {}
}

3、使用ftp从windows服务器下载文件

public static boolean downFile(
String url, //FTP服务器hostname
int port,//FTP服务器端口
String username, //FTP登录账号
String password, //FTP登录密码
String remotePath,//FTP服务器上的相对路径
String fileName,//要下载的文件名
String localPath//下载后保存到本地的路径 ) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(url, port);
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);//登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
System.out.println("aaa");
ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles(); for(FTPFile ff:fs){
System.out.println("bb" + fs); if(ff.getName().equals(fileName)){
System.out.println("dd");
File localFile = new File(localPath+"/"+ff.getName());
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is);
System.out.println("ccc" +ff.getName()+fileName);
is.close();
}
}
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}

java ftp下载文件的更多相关文章

  1. Java FTP下载文件以及编码问题小结

    问题 之前在开发过程中,遇到了一点问题,我要访问一个FTP服务器去下载文件详细情况如下: 1. 需要传入一个可能为中文的文件名: 2. 通过文件名去FTP上寻找该文件: 3. FTP服务器的命名编码为 ...

  2. C#FTP下载文件出现远程服务器返回错误: (500) 语法错误,无法识别命令

    如果下载多个文件的时候,有时候莫名其妙的出现500服务器错误,很有可能是没有设置KeepAlive 属性导致的. 出现应用程序未处理的异常:2015/1/6 11:40:56 异常类型:WebExce ...

  3. python从FTP下载文件

    #!/usr/bin/python # -*- coding: utf-8 -*- """ FTP常用操作 """ from ftplib ...

  4. .Net 连接FTP下载文件报错:System.InvalidOperationException: The requested FTP command is not supported when using HTTP proxy

    系统环境: Windows + .Net Framework 4.0   问题描述: C#连接FTP下载文件时,在部分电脑上有异常报错,在一部分电脑上是正常的:异常报错的信息:System.Inval ...

  5. c#.net从ftp下载文件到本地

    c#.net从ftp下载文件到本地      /*首先从配置文件读取ftp的登录信息*/  ;                     ;                     , buffer_c ...

  6. 记录java ftp下载图片只有96KB的问题

    public InputStream downloadFile(String path) { if(StringUtils.isBlank(path)) { return null; } connne ...

  7. java实现FTP下载文件

    ftp上传下载文件,是遵照ftp协议上传下载文件的,本例仅以下载文件为例. 重要的方法解释: 1.FTP功能相关依赖路径:org.apache.commons.net.ftp.*: 2.ftp默认端口 ...

  8. Java远程下载文件到本地(http协议和ssh2协议)

    Java中java.io包为我们提供了输入流和输出流,对文件的读写基本上都依赖于这些封装好的关于流的类中来实现.前段时间遇到了以下两种需求: 1.与某系统对接,每天获取最新的图片并显示在前端页面.该系 ...

  9. FTP下载文件失败

    这几天的定时任务下载文件的脚本失败了. 于是手工执行测试,发现报550 Permission denied. Passive mode refused. 意思就是被动模式下,没有权限获取文件. 解决方 ...

随机推荐

  1. JQ写法和js写法 方法函数化

    <script> $(function () { $('#head').click=function () { alert($(this).html()) } }) </script ...

  2. phpmyadmin任意文件包含漏洞分析(含演示)

    0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: ...

  3. spring security 管理会话 多个用户不可以使用同一个账号登录系统

    多个用户不能使用同一个账号同时登陆系统. 1. 添加监听器 在web.xml中添加一个监听器,这个监听器会在session创建和销毁的时候通知Spring Security. <listener ...

  4. shell bash ksh

    shell 是一个交互性命令解释器.shell独立于操作系统,这种设计让用户可以灵活选择适合自己的shell.shell让你在命令行键入命令,经过shell解释后传送给操作系统(内核)执行.     ...

  5. IOS第18天(4,核心动画,时钟效果,定时器,图片旋转角度,CALayer 锚点,获取当前,小时,秒,分)

    **** #import "HMViewController.h" // 每秒秒针转6度 #define perSecendA 6 // 每分钟分针转6度 #define perM ...

  6. Myeclipse8.5 subscription expired自己动手获取Myeclipse的注册码

    步骤: 1.在myeclipse中新建一个java project 2.在src目录下建立一个名为MyEclipseGen的类 3.将下面的代码复制到该类中,并运行. import java.io.* ...

  7. HTTP Error 500 - Server Error.

    Error Details: The FastCGI process exited unexpectedly Error Number: -1073741819 (0xc0000005). Error ...

  8. springmvc Failed to load resource: the server responded with a status of 404 (Not Found)

    jsp页面导入css.js提示上述问题. Spring对静态资源的请求做专门处理 <!-- 对静态资源的请求 --><mvc:resources location="/js ...

  9. JavaScript显示当前时间的代码

    方法一: <script type="text/javascript"> function startTime() { //获取当前系统日期 var today=new ...

  10. Splay树-Codevs 1296 营业额统计

    Codevs 1296 营业额统计 题目描述 Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司 ...