java ftp 判断文件是否存在_FTP判断文件是否存在
FTP Client使用的是Apache Commons Net 3.3
/**
* 检查FTP上指定文件是否存在
* @param remoteFilePartNameList 文件路径
* @throws BusinessException
* @throws IOException
*/
private void checkFtpFileExist(List remoteFilePartNameList) throws BusinessException, IOException {
FTPClient ftp = new FTPClient();
String serverIP = "1.1.1.1";
String serverUserName = "user";
String serverPassword = "pwd";
try {
ftp.connect(serverIP);
ftp.login(serverUserName, serverPassword);
if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
ftp.enterLocalPassiveMode();
ftp.setFileType(FTP.BINARY_FILE_TYPE);
StringBuilder sb = null;
for (String remoteFileName : remoteFilePartNameList) {
InputStream inputStream = ftp.retrieveFileStream(remoteFileName);
if (inputStream == null || ftp.getReplyCode() == 550) {
// 文件不存在
if (sb == null) {
sb = new StringBuilder();
}
String[] strings = StringUtils.split(remoteFileName, Constants.SLASH);
sb.append(strings[strings.length - 1]).append(", ");
}
if (inputStream != null) {
inputStream.close();
ftp.completePendingCommand(); // 必须执行,否则在循环检查多个文件时会出错
}
}
if (sb != null && sb.length() > 2) {
sb.setLength(sb.length() - 2);
String notfoundReportPaymentIdStr = sb.toString();
log.error("FTP SERVER上未找到以下文件[" + notfoundReportPaymentIdStr + "]");
String exceptionMessage = i18nServiceImpl.queryValue("E374", "文件{0}不存在!");
throw new BusinessException(StringUtils.replace(exceptionMessage, "{0}", notfoundReportPaymentIdStr));
}
}
else {
log.error("连接FTP SERVER失败,SERVER IP[" + serverIP + "], USER NAME[" + serverUserName + "], Ftp response:" + ftp.getReplyString());
ftp.disconnect();
throw new BusinessException(i18nServiceImpl.queryValue("E373", "连接FTP失败!"));
}
ftp.logout();
}
catch (IOException e) {
log.error("连接FTP SERVER失败,SERVER IP[" + serverIP + "], USER NAME[" + serverUserName + "]", e);
throw e;
}
finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
}
catch (IOException ioe) {
// do nothing
}
}
}
}
相关文章:

软件定义光网络-SDON
为什么80%的码农都做不了架构师?>>> 软件定义光网络-SDON 随着宽带业务与应用的持续增长,光网络面临着新的发展机遇与技术挑战。作为当前业界研究热点之一,SDON聚焦于将软件定义技术融入光网络的综合解决方案,其关键技…

记录一次爬取某昵称网站的爬虫
同学跑去实习了...然后工作的时候要她用python写一个爬虫,爬取一万个可以用的用户昵称。(为什么他们都能找到工作啊QAQ) 然后,她找到了我...然后在我动笔的时候,发现之前写过的爬虫基本上忘完了...无奈下只好对着以前…

《LINUX3.0内核源代码分析》第一章:内存寻址
https://blog.csdn.net/ekenlinbing/article/details/7613334 摘要:本章主要介绍了LINUX3.0内存寻址方面的内容,重点对follow_page函数进行注释,以帮助读者大致了解ARM A9的页表组织。 读者需要理解一些基本概念:虚拟地址、物理地…

java integer int 比较_java Integer和int之间的比较问题是什么?
展开全部java Integer和int之间e68a84e8a2ad3231313335323631343130323136353331333365633864的比较问题。求解释public static void main(String[] args) { // TODO Auto-generated method stub Integer a new Integer(1); Integer b new Integer(1); int c1; Integer e 1;…

Oracle 12C -- 基于sequence的列的默认值
12C支持先创建一个sequence,然后再将该sequence指定为某个列的值的默认表达式。 和"identity column"具有以下不同点: 对列的个数没有限制 sequence必须在列定义之前定义 如果删除了sequence,会导致后面的insert报错 表的owner&…

Python的XML-RPC学习
编写客户端提交数据到服务器处理是程序员最常碰到的几个问题之一。各种不同的语言对此都有相应的解决方案。比如Unix下,C程序员们可以用SUNRPC,Java程序员则使用RMI来处理。大多数语言还都可以使用Web Service或者ICE。它们的使用方法类似,编…

Anaconda安装,jupyter notebook 使用说明
conda install pandas---安装pandas包 conda remove package_names conda update package_names conda list ---列出该环境下安装的package conda install nb_conda --------安装nb_conda用于notebook自动关联nb_conda的环境 conda create -n env_name package_name -------…
ARM32页表-虚拟地址到物理地址的转换
ARM32的页表 页表就是用于将虚拟地址转换为物理地址的转换关系表。访问虚拟地址时,计算机通过页表找到对应的实际物理地址访问。 我们在上一节介绍了内存管理模块概图, 怎么完成从pgd 到 page的转化呢? linux 内核code是通过follow_page来完成的…

java 重载 参数子类_java - Java中带有子类参数的函数重载 - 堆栈内存溢出
这个问题已经在这里有了答案:我有一个扩展了另一个类的类(在这种情况下,这是一个例外):public class NewTypeException extends Exception {private String exceptionField;public String getExceptionField() {return exceptionField;}publi…

Caused by: java.sql.BatchUpdateException
Caused by: java.sql.BatchUpdateException: Table (%s) has been dropped, altered or renamed.解决方法重启项目转载于:https://www.cnblogs.com/mySummer/p/4723561.html

do{ ...}while(0)应用技巧
辅助定义复杂的宏example: #define A(args) do { a(args); b() } while(0);如果定义#define A(args) a(args);b();if(i > 0) A(i) if(i > 0 )do { a(2);b();} while(0) 或者while(1)a(args);b(); 这不是我们想要的,因为第二个b();不会被执行。代替g…

Idea--使用Idea调试设置
参考 https://blog.csdn.net/yyjava/article/details/81453748 关闭一些Idea默认设置,否则懵逼到爆炸.. 1.关闭集合类视图 2.关闭watch视窗默认调用toString(真的很懵逼!!) 转载于:https://www.cnblogs.com/microcat/p…

基于i2c子系统的驱动分析
https://blog.csdn.net/qq_28992301/article/details/52467766

creo JAVA_Creo 4.0二次开发工具框架搭建
一、新建MFC DLL工程二、配置项目属性附加依赖项中输入:netapi32.lib;psapi.lib;mpr.lib;wsock32.lib;protk_dll_NU.lib;protk_dllmd_NU.lib;protkmd_NU.lib;protoolkit_NU.lib;pt_asynchronous.lib;ptasyncmd.lib;ucore.lib;udata.lib;尝试编译工程,如果…

html5 FileReader初识
使用html5的FileReader可以实现多媒体文件的预览功能,代码如下: <html> <head> <script type"text/javascript"> var fileReader new FileReader(); fileReader.onload function(event) {document.getElementById(image).…

puppet aix之自动化用户管理
一、 用户组的管理 (一) Puppet组管理特性 1. manages_aix_lam用来管理AIX的LAM(Loadable Authentication Module)系统。 2. manages_members对于目录服务是组属性成员,而不是用户。 3. system_groups用来允许你创建比较小GID的系统组,一般小…

C# 文件操作
C# 文件操作文件操作: 检查 创建 读取 写入 修改 删除目录操作: 检查 创建 读取 写入 修改 删除文件操作 若要执行此操作...请参阅本主题中的示例...创建文本文件向文件写入文本写入文本文件向文件写入文本读取文本文件从文件读取文本向文件中追加文本File.AppendText FileInfo…
一种内存池管理技术
本文介绍一种内存池管理技术。 在m公司工作了4年多,一直负责内存池模块问题的处理,比如内存越界,data abort 系统异常的处理,本文加以总结,以便后续参考。 读本文之前,先有个约定,本文中提到的p…

企业支付宝账号开发接口实现
转载自:http://my.oschina.net/xshuai/blog/313809 关于即时到账的开发。审核通过。简单测试如下。 希望看的可以收藏或者赞一下哦。 1:拥有自己的支付宝企业账号。去产品商店选择适合自己的方案。并签约合同。 2:选择合适的商家收款产品并去签约。填写相应的信息 3…
Fastadmin管理Mysql_FastAdmin-CMS模版制作(6)-正式部署
一、工具信息介绍(1)服务器系统:CentOS7.2 64位系统;(2)服务器面板:宝塔,官网地址:https://www.bt.cn/;(3)PHP7.2;(4)mysql5.6;(5)Nginx;二、运行环境安装(1)进入宝塔官网…

使用微软提供的Office Online实现Office文档的在线查看,编辑等功能
使用微软提供的Office Online平台只需要一个网址即可在线查看Xls,doc,PPT等文档http://view.officeapps.live.com/op/view.aspx?src要查看的文档地址在线编辑需要登录live.com并从onedrive中打开或新建文档也可以来自在线模板(下面的Excel来自Excel Online模板,编辑…

HDU(1847)Good Luck in CET-4 Everybody!
利用PN分析求解此题。递推下去会发现3和3的倍数都是P点。 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <set> using namespace std; int main() {int n;while(~scanf("%d",&n)){i…
uboot引导kernel - 1 - Flash的分区
uboot启动Linux内核过程分为4大步骤: 问题1:Flash的分区相关问题 在 上述步骤1/2/4 中都提到了从启动介质(iNand/SD)中读取uboot/kernel到SRAM/DDR中,那么具体从启动介质的什么位置分别读取呢? 上述步骤1中,iROM的…

fedora mysql默认密码忘记_Linux fedora 24 忘记密码图形化界面修改root密码的方法
方法及其简单,只需要两步即可:1、第一步:打开终端,输入sudo su命令。–此处的密码为普通用户的密码,也就是开机时输入的密码。2、第二步:直接sudo passwd root就重置了roor密码了。此时输入新的密码即可&am…

Java Web项目结构
Java Web项目结构(一般) 1、Java src 2、JRE System Library 3、Java EE 6 Libraries 4、Web App Libraries 5、WebRoot 版权声明:本文博客原创文章,博客,未经同意,不得转载。转载于:https://www.cnblogs.c…

WTForms 小计1 forms
2019独角兽企业重金招聘Python工程师标准>>> 定义 from wtforms import Form, StringField, validators class MyForm(Form):first_name StringField(uFirst Name, validators[validators.input_required()])last_name StringField(uLast Name, validators[vali…

day32-1 事件Event
事件Event-线程 每一个线程都是独立运行且状态不可预测。你把一个任务丢到子线程中,这个任务将异步执行,如何获取到这个任务的执行状态?使用threading库中的Event对象。对象包含一个可由线程设置的信号标志,线程直到等到该标志为真…
uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题
uboot启动Linux内核过程分为4大步骤: 问题2: uboot阶段DDR的分区的问题 上述步骤2和步骤4中,有将uboot/kernel拷贝纸DDR的步骤,具体要拷贝到DDR的什么位置呢? 分清楚这两个概念: 链接地址:链接…

java ftp pasv_Ftp主动模式和被动模式以及java连接ftp模式设置
FTP的主动模式与被动模式FTP服务器使用20和21两个网络端口与FTP客户端进行通信。FTP服务器的21端口用于传输FTP的控制命令,20端口用于传输文件数据。FTP主动模式:FTP客户端向服务器的FTP控制端口(默认是21)发送连接请求,服务器接受连接&#…
Python2.7 安装numpy报错解决方法
Windows 10下用pip安装numpy包报错: Microsoft Visual C 9.0 is required Unable to find vcvarsall.bat Get it from http://aka.ms/vcpython27 通过报错提示信息,打开http://aka.ms/vcpython27会跳转到Microsoft Visual C Compiler for Python 2.7的下…