java ftp上传文件 linux_linux下用java实现ftp上传、下载文件
//1、依赖的jar包:commons-net-1.4.1.jar
/**
* 上传文件到ftp服务器
* @param ftpHost
* @param userName
* @param passWord
* @param port
* @param ftpPath
* @param fileContent
* @param writeTempFielPath
*/
public static void upLoadFileForFtp(String ftpHost, String userName,
String passWord, int port, String writeTempFielPath, String fileContent,
String ftpUploadPath, String ftpFileName){
FTPClient ftpClient = null;
try {
ftpClient = initFtpClient(ftpHost, userName, passWord, port);
//不存在则创建
newFolder(writeTempFielPath);
boolean writeResult = saveFile(writeTempFielPath + ftpFileName, fileContent);
if (writeResult) {
File f = new File(writeTempFielPath + "/" + ftpFileName);
InputStream in = new FileInputStream(f);
ftpClient.changeWorkingDirectory(ftpUploadPath);
if (ftpClient.storeFile(ftpFileName, in)){
logger.info("文件" + ftpFileName + "上传成功!");
}else{
logger.info("文件" + ftpFileName + "上传失败!");
}
in.close();
f.delete();
} else {
logger.info("临时文件创建失败!");
}
} catch (Exception e) {
StaticVar.printExceptionInfo(logger, e);
e.printStackTrace();
}finally{
closeConn(ftpClient);
}
}
/**
* 下载最新文件
* @param ftpHost
* @param userName
* @param passWord
* @param port
* @param ftpPath
* @param fileName
* @return
* @throws IOException
*/
public static synchronized int downFilesForFtp(String ftpHost, String userName,
String passWord, int port, String ftpPath) throws IOException{
int updateCount = 0;
OutputStream os = null;
FTPClient ftpClient = null;
try {
ftpClient = initFtpClient(ftpHost, userName, passWord, port);
ftpClient.changeWorkingDirectory(ftpPath);
System.out.println("切换目录:"+ftpClient.getReplyString());
FTPFile[] files = ftpClient.listFiles();
//创建临时目录
FileUtil.newFolder(StaticVar.TEMP_PATH);
for (int i = 0; i < files.length; i++) {
String fileName = files[i].getName();
//判断文件类型
if (fileName.indexOf(".txt") < 0){
continue;
}
//判断日志文件是否已存在,没有则创建
String downLogPath = StaticVar.DOWN_LOG_PATH+StaticVar.DOWN_LOG_NAME;
File downLog = new File(downLogPath);
if (downLog.exists()){
//判断是否已经下载过
if (isDown(files[i], downLogPath)){
logger.info("文件:"+fileName+"已经下载过了!");
continue;
}else{
updateCount++;
}
}else{
downLog.createNewFile();
updateCount++;
}
String saveFilePath = StaticVar.TEMP_PATH + fileName;
os = new FileOutputStream(new File(saveFilePath));
boolean isDown = ftpClient.retrieveFile(fileName, os);
//记录下载日志
if (isDown){
logger.info("文件:" +saveFilePath+ "下载成功!");
FileUtil.newFolder(StaticVar.DOWN_LOG_PATH);
String log = files[i].getName() + "&" + files[i].getSize() + "&" + DateUtil.getNowDate(DateUtil.yyyyMMddHHmmss);
FileUtil.writeFile(downLogPath, log);
}
}
} catch (Exception e) {
e.printStackTrace();
logger.info("文件列表获取失败!");
StaticVar.printExceptionInfo(logger, e);
}finally{
if (null != os){
os.flush();
os.close();
}
closeConn(ftpClient);
}
return updateCount;
}
/**
* 读取文件
* @param file
* @return
* @throws IOException
*/
public static synchronized String readFile(String filePath) throws IOException{
StringBuffer resultBuffer = null;
InputStream in = null;
BufferedReader reader = null;
try {
in = new FileInputStream(filePath);
if (null != in){
reader = new BufferedReader(new InputStreamReader(in, "utf-8"));
resultBuffer = new StringBuffer();
String data = null;
while((data = reader.readLine()) != null){
resultBuffer.append(data + "\n");
}
return resultBuffer.toString();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if (null != reader){
reader.close();
}
if (null != in){
in.close();
}
}
return null;
}
/**
* 写文件
* @param fileName
* @param fileContext
* @param writeTempFielPath
* @return
*/
public static boolean saveFile(String filePath, String fileContext) {
try {
File file = new File(filePath);
if (!file.exists()) {
if (!file.createNewFile()) {
logger.info("文件创建失败!");
}
}
BufferedWriter write = new BufferedWriter(new FileWriter(file, true));
write.write(fileContext);
write.flush();
write.close();
return true;
} catch (Exception e) {
logger.error("文件写入失败!");
e.printStackTrace();
return false;
}
}
/**
* 判断文件是否已经下载
* @param ftpFile
* @param fileName
* @param downLogPath
* @return
* @throws IOException
*/
private static boolean isDown(FTPFile ftpFile, String downLogPath) throws IOException {
String fileName = ftpFile.getName();
String logTxt = FileUtil.readFile(downLogPath);
String[] logs = logTxt.split("\n");
boolean isDown = false;
for (String str : logs) {
String[] log = str.split("&");//log[0]:文件名,log[1]:大小 (byte)
if (fileName.equals(log[0]) && ftpFile.getSize() == Long.parseLong(log[1])){
isDown = true;
break;
}
}
return isDown;
}
java ftp上传文件 linux_linux下用java实现ftp上传、下载文件相关推荐
- 批量上传相册,将一个文件夹下的所有图片,复制到另一个文件夹,仅给出文件夹目录
package cn.hp.demo01;import java.io.*;/* * 批量上传相册 *将一个文件夹下的所有图片,复制到另一个文件夹 *仅给出文件夹目录*/ public class D ...
- .pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法
.pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法 1.最简单的方法是修改后缀名为.zip然后解压,解压后就可以看到一张图片,这个就是文档内容了. 2.更 ...
- linux ftp下载文件_Linux系统中10个使用Wget命令下载文件示例
wget 是一个从网络上自动下载文件的命令行工具,支持通过 HTTP.HTTPS.FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理.它是一个非交互式工具,非常适合通过脚本或者在 ...
- Java占Linux超过xms,linux下分析java程序占用CPU、内存过高
一.CPU过高分析 1)使用TOP命令查看CPU.内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比.其中CPU状态中标示id的为空闲 ...
- 在当前文件夹下创建以日期和时间命名的文件夹
工作中经常要用到在当前文件夹下创建以日期加时间命名的文件夹,手动太过麻烦,于是写了个脚本, windows下直接用bat @echo off ::获取日期 将格式设置为:20150410 set da ...
- linux整个目录复制移动,Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹,个人常用收录...
1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...
- python将一个文件夹下图片按比例分在两个文件夹下
#!/usr/bin/env python # -*- coding:utf-8 -*- # 将一个文件夹下图片按比例分在两个文件夹下,比例改0.7这个值即可 import os import ran ...
- Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码
1.遇到的问题 谷歌和ie下载文件正常 Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码,下载的文件名称为test.doc.html,手动去掉多余的后缀.html即可正 ...
- linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...
前言 服务器.vps,难免会遇到各种问题,丢失数据,则必然痛心疾首啊!!! 数据无价,so建议养成定期备份的习惯!而且,要多备份几份,本地.网盘.FTP空间等,都多保存几份! 这里,就为大家带来一个l ...
- linux禁止客户端上传文件_Linux下Shell脚本实现FTP自动上传和下载文件
概述 之前测试写的一个脚本,主要是为了实现FTP自动上传和下载文件.大家可以参考下: 基础环境配置 [root@pxzxdm01 ~]# useradd -d /home/ftp1 ftp1 [roo ...
最新文章
- Spring中使用Log4j记录日志
- mongodb数据库淘汰_红帽彻底不跟MongoDB玩了,只认PostgreSQL
- 路由器中Rom/Ram/NVRAM/FLASH的区别
- fastText中常见问题汇总
- C#性能优化:延迟初始化LazyT
- MFC对话框播放8位512*512的像素数据
- 高等数学下-赵立军-北京大学出版社-题解-练习11.3
- TCP与UDP特点与区别
- 分享Discuz! X2插件嵌入点列表(包含门户、社区、群组等)
- python生成随机数random操作_Python random生成随机数示例
- linux video属性_Linux 下Video 的制作方法
- QT5.14在Win10和Win7下的安装
- linux proc目录 是什么意思,linux 下proc目录里面有什么
- 【线性代数】详解正定矩阵、实对称矩阵、矩阵特征值分解、矩阵 SVD 分解
- ubuntu16.04离线安装NIVIDIA驱动
- intel服务器无线网卡,刷版本号?Intel再发新版无线网卡驱动
- 移动硬盘使用什么文件系统格式
- MongoDB day03
- 不懂量子力学?那你可以试试在家里做这五个实验!
- [JavaScript学习-01]JavaScript实现九宫格抽奖
热门文章
- 运用帝国CMS建站仿站的简单教程(初学者进)
- 【数仓】数据质量监控
- 学计算机有那些方向,计算机专业的研究生研究方向有哪些
- TCP/IP协议之struct sock结构体
- 【JAVA】RequestResponse
- Error: The project seems to require yarn but it‘s not installed.
- 备份服务器c盘系统还原,win7 64位专业版系统下备份和还原C盘的方法
- 查找算法:二分法,插值法的公式详解——菜鸟进阶的必经之路!!!
- mysql sql patindex_深入SQL截取字符串(substring与patindex)的详解
- 差动变压器的振动测量实验 思考题