1、连接ftp

       FTPClient ftpClient = new FTPClient();
ftpClient.connect(host,port);
ftpClient.login(userName, password);
ftpClient.setControlEncoding(encoding);
ftpClient.changeWorkingDirectory(workDir);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//设置上传文件类型为二进制,否则将无法打开文件
ftpClient.enterLocalPassiveMode();

2、从ftp下载文件

        String base64;
InputStream inputStream = null; try {
        ///防止中文乱码
if (!StringUtils.isEmpty(remotDir)){
remoteFileName = new String(remotDir.getBytes("GBK"), "iso-8859-1")+
File.separator+new String(remoteFileName.getBytes("GBK"), "iso-8859-1");
}else{
remoteFileName = new String(remoteFileName.getBytes("GBK"), "iso-8859-1");
}
//获取待读文件输入流
inputStream = ftpClient.retrieveFileStream(remoteFileName);
//inputStream.available() 获取返回在不阻塞的情况下能读取的字节数,正常情况是文件的大小
byte[] bytes = new byte[inputStream.available()]; inputStream.read(bytes);//将文件数据读到字节数组中
Base64.Encoder encoder = Base64.getEncoder();
base64 = encoder.encodeToString(bytes);//将字节数组转成base64字符串
log.info("read file {} success",remoteFileName);
// ftpClient.logout();
} catch (IOException e) {
log.error("read file fail ----->>>{}",e.getCause());
return null;
}finally {
if (null!=inputStream){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

3、向ftp上传文件

 try {
if (!StringUtils.isEmpty(remoteDir)){
originName = new String(remoteDir.getBytes("GBK"),"iso-8859-1")+File.separator+
new String(originName.getBytes("GBK"),"iso-8859-1");
}else{
originName = new String(originName.getBytes("GBK"),"iso-8859-1");
}
Boolean isSuccess = ftpClient.storeFile(originName,inputStream);//保存文件
if (!isSuccess){
throw new FtpException(originName+"---》上传失败!");
}
log.info("{}---》上传成功!",originName);
} catch (IOException e) {
log.error("{}---》上传失败!",originName);
throw new FtpException(originName+"上传失败!");
}finally {
if (null!=inputStream){
try {
inputStream.close();
} catch (IOException e) {
log.debug(e.getMessage());
}
} }

java访问ftp的更多相关文章

  1. java访问ftp的一些操作

    通过java代码来访问ftp服务器,进行下载操作

  2. Ftp主动模式和被动模式以及java连接ftp模式设置

    Ftp主动模式和被动模式以及java连接ftp模式设置 https://www.cnblogs.com/huhaoshida/p/5412615.html (1) PORT(主动模式) PORT中文称 ...

  3. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  4. java访问修饰符

    了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...

  5. java使用ftp上传文件

    ftpServer是apache MINA项目的一个子项目,它实现了一个ftp服务器,与vsftpd是同类产品.Filezilla是一个可视化的ftp服务器. ftp客户端也有很多,如Filezill ...

  6. CentOS7 FTP服务搭建(虚拟用户访问FTP服务)

    概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FT ...

  7. JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)

    package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...

  8. [THINKING IN JAVA]访问权限控制

    6 访问权限控制 6.1 包:库单元 package.import.import *.import static: 修改classpath环境变量可以将自己写的类库添加至环境变量并在任何java程序中 ...

  9. java 访问 usb

    java 要访问 usb 设备,通常要自己写c/c++代码,然后再用 java 访问这些组件,以达到控制usb设备的目的.但现在有一个开源组件 libusb 帮我们做好了访问usb设备的封装(包括wi ...

随机推荐

  1. 又联考了一场,感觉自己好菜啊,T2推出了公式但是不会逆元QAQ,难受啊!!!不过都确实是一道逆元的好题撒!

    简单的玄学(random) 题目描述: 样例输入: 样例1: 3 2 样例2: 1 3 样例3: 4 3 样例输出: 样例1: 1 8 样例2: 1 1 样例3: 23 128 提示: 时间限制:10 ...

  2. Android逆向之旅---解析编译之后的Resource.arsc文件格式

    一.前言 快过年了,先提前祝贺大家新年快乐,这篇文章也是今年最后一篇了.今天我们继续来看逆向的相关知识,前篇文章中我们介绍了如何解析Android中编译之后的AndroidManifest.xml文件 ...

  3. Log4d:Error:Could not instantiate class[com.mapgis.util.tools.JDBCExtAppender]

    https://blog.csdn.net/gikieng/article/details/47150567  https://blog.alswl.com/2018/03/sql-server-mi ...

  4. 实现word在线预览 有php的写法 也有插件似

    <?php //header("Content-type:text/html;charset=utf-8"); //word转html 展示 $lj=$_GET['file' ...

  5. 4.HTML 常用标签及属性

    1. 链接 标签: <a></a> 属性: href:链接地址 target:打开方式 _blank:新标签页打开 _self:当前页面打开(默认) title:链接提示 2. ...

  6. What is httpcontext

    https://docs.microsoft.com/en-us/dotnet/api/system.web.httpcontext?view=netframework-4.8 Encapsulate ...

  7. 洛谷P1982 小朋友的数字

    题目传送门 这个题的题目有点长,我们先来分析一波. 首先,这个题目中提到了以下几个量 1.最直接的就是每个小盆友手上的数字,这是题目给你的 2.每个小盆友的特征值 题目中给的定义是:每个小朋友的特征值 ...

  8. AdaGrad Algorithm and RMSProp

    AdaGrad全称是Adaptive Gradient Algorithm,是标准Gradient Descent的又一个派生算法.标准Gradient Descent的更新公式为: 其中Learni ...

  9. HTML批量修改——正则表达式实践

    目录 1.问题描述 2.初步研究 3.进一步研究 3.1提取2.*中的序号* 3.2提取标题 3.3选取全文 3.4替换 参考资料 1.问题描述 如下所示的一段HTML代码: ... <h2 a ...

  10. MySQL-第三篇SQL语句基础(2)数据库约束

    1.数据库约束. 约束是在表上强制执行的数据校验规则,约束主要用于保证数据库里数据的完整性. MySQL使用information_schema数据库里的TABLE_CONSTRAINTS表来保存该数 ...