java实现将文件上传到ftp服务器的方法

网友投稿 188 2023-07-08


java实现将文件上传到ftp服务器的方法

本文实例讲述了java实现将文件上传到ftp服务器的方法。分享给大家供大家参考,具体如下:

工具类:

package com.fz.common.util;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.apache.commons.net.ftp.FTPClient;

import org.apache.commons.net.ftp.FTPReply;

public class FileUtil {

/**

*

* @date Sep 26, 2011 10:17:39 AM

* @return

* @author zhangh

*/

public static DataInputStream getInput(){

DataInputStream d = null;

try {

d = new DataInputStream(new FileInputStream("c:/wmc.dat"));

return d;

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return d;

}

/**

*

* @date Sep 26, 2011 10:17:44 AM

* @param whites

* @return

* @author zhangh

*/

public static boolean creatWhiteManageFile(byte[] whites,String file) {

DataOutputStream d;

try {

d = new DataOutputStream(new FileOutputStream(file));

d.write(whites);

d.flush();

} catch (Exception e) {

// TODO Auto-generated catch block

return false;

// e.printStackTrace();

}

return true;

}

/**

*

* @date Sep 16, 2011 4:39:22 PM

* @param url

* @param username

* @param password

* @param path

* @param filename

* @param input

* @return

* @author zhangh

*/

public static boolean uploadFile(String url, String username,

String password, String path, String filename, InputStream input) {

boolean success = false;

FTPClient ftp = new FTPClient();

try {

int reply;

ftp.connect(url);

// ftp.connect(url, port);// 连接FTP服务器

// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器

ftp.login(username, password);// 登录

reply = ftp.getRhttp://eplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return success;

}

ftp.changeWorkingDirectory(path);

ftp.storeFile(filename, input);

ftp.logout();

input.close();

success = true;

} catch (IOException e) {

e.printStackTrace();

} finally {

if (ftp.isConnected()) {

try {

ftp.disconnect();

} catch (IOException ioe) {

}

}

}

return success;

}

/**

*

* 方法名称:uploadFileFtp

* 方法描述:黑名名单,黑用户文件上传ftp服务器

* @param url

* @param username

* @param password

* @param path

* @param filename

* @param input

* @param input2

* @return

* boolean

* version 1.0

* author wuxq

* Oct 26, 2011 3:19:09 PM

*/

public static boolean uploadFileFtp(String url, String username,

String password, String path, String filename, InputStream input,

InputStream input2) {

Date date = new Date();

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String time = formatter.format(date);

boolean success = false;

FTPClient ftp = new FTPClient();

try {

int reply;

ftp.connect(url);

ftp.login(username, password);// 登录

reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return success;

}

ftp.changeWorkingDirectory(path);

ftp.storeFile(filename, input);

ftp.storeFile(filename + time, input2);

ftp.logout();

input.close();

success = true;

} catch (IOException e) {

e.printStackTrace();

} finally {

if (ftp.isConnected()) {

try {

ftp.disconnect();

} catch (IOException ioe) {

}

}

}

return success;

}

}

读取配置文件:

package com.fz.fzbike.domain;

import java.io.BufferedInputStream;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

import org.apache.log4j.Logger;

import com.eNets.framework.util.SysConstants;

/**

* 获取ftp服务器信息的bean类

*

* @author wuxq

*

*/

public class SysConstats {

private static Logger log = Logger.getLogger(SysConstats.class);

public static String FTPSERVER;// ftp服务器ip地址

public static String FTPUSERNAME;// ftp服务器用户名

public static String FTPPASSWORD;// ftp服务器用户密码

public static String ENVELOPERESULTROOT;// 存放ftp服务器的路径

public SysConstats() {

try {

InputStream in = new BufferedInputStream(new FileInputStream(

SysConstants.PUBLIC_PATH.substring(0,

SysConstants.PUBLIC_PATH.length() - 7)

+ "/bidfileconfig.properties"));

Properties prop = new Properties();

prop.load(in);

SysConstats.FTPSERVER = prop.getProperty("ftpServer", "none");

SysConstats.FTPUSERNAME = prop.getProperty("ftpUserName", "none");

SysConstats.FTPPASSWORD = prop.getProperty("ftpPassword", "none");

SysConstats.ENVELOPERESULTROOT = prop.getProperty(

"envelopeResultRoot", "none");

log.debug("读取ftp配置信息成功!");

} catch (IOException e) {

log.debug("读取ftp配置信息失败!");

e.printStackTrace();

}

}

public static String getFTPSERVER() {

return FTPSERVER;

}

public static void setFTPSERVER(String ftpserver) {

FTPSERVER = ftpserver;

}

public static String getFTPUSERNAME() {

return FTPUSERNAME;

}

public static void setFTPUSERNAME(String ftpusername) {

FTPUSERNAME = ftpusername;

}

public static String getFTPPASSWORD() {

return FTPPASSWORD;

}

public static void setFTPPASSWORD(String ftppassword) {

FTPPASSWORD = ftppassword;

}

public static String getENVELOPERESULTROOT() {

return ENVELOPERESULTROOT;

}

public static void setENVELOPERESULTROOT(String enveloperesultroot) {

ENVELOPERESULTROOT = enveloperesultroot;

}

public static void main(String args[]) {

new SysConstats();

}

}

将文件上传ftp:

package com.fz.fzbike.biz;

import java.io.BufferedInputStream;

import java.io.ByteArrayOutputStream;

import java.io.DataOutputStream;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.text.DecimalFormat;

import com.eNets.basesys.user.vo.UserVO;

import com.eNets.framework.assemble.RequestHashNew;

import com.eNets.framework.database.DBConnection;

import com.fz.common.util.FileUtil;

import com.fz.fzbike.common.StringUtil;

import com.fz.fzbike.domain.SysConstats;

/**

* 上传卡内码到ftp服务器 生成bat文件

*

* @author wuxq 2011-09-28

*/

public class UploadCardInNoFtpAction {

/**

*

* 方法名称:uploadFtp 方法描述:上传文件到ftp

*

* @param reh

* void version 1.0 author wuxq Sep 28, 2011 10:38:38 AM

*/

public void uploadFtp(RequestHashNew reh) {

String cardType = reh.get("cardType").toString();

DBConnection dbc = reh.getDBC();// 链接数据库

dbc.endTran();

// 判断是否是空值 空有可能是挂失,退出挂失, 退出黑名单, 根据卡id得到卡类型

if (StringUtil.isNull(cardType)) {

String cardtypesql = "select ci.card_type from lc_t_card_info ci where ci.card_id="

+ reh.get("SELECTEDID");

cardType = dbc.getList0(cardtypesql);

}

String top = "c:/upload/";

String file = top + "bmc.dat"; // 定义一个目录存放临时的黑名单bat文件

String whiteFile = top + "wmc.dat";// 定义一个目录存放临时的白名单bat文件

String buserfile = top + "buser.dat"; // 定义一个目录存放临时的黑用户文件

String fileID = dbc.setOracleGlideValue("LC_T_UPGRADE_FILE");// 得到文件表的序列号

// 得到当前用户的ID

UserVO userVo = reh.getUserVO();

String UserID = userVo.getUserID();

DecimalFormat df = new DecimalFormat("0.0");

if (cardType.equals("7")) {

StringBuffer bf = new StringBuffer(1024);

bf

.append(

"select distinct card_in_no from(select tc.card_in_no")

.append(

" from lc_t_blacklist tb left join lc_t_card_info tc")

.append(

" on tb.card_id = tc.card_id where tc.card_type = 7")

.append(" and tb.whether_effective = 1 union all select")

.append(" tc.card_in_no from lc_t_card_loss cl left join")

.append(

" lc_t_card_info tc on cl.card_id=tc.card_id where tc.card_type = 7 and")

.append(" cl.whether_effective=1) t order by t.card_in_no");// 黑名单及挂失记录表中所有的管理员记录

StringBuffer bffer = new StringBuffer(1024);

bffer

.append("select ti.card_in_no from lc_t_card_info ti")

.append(

" where ti.card_type=7 and ti.card_make_status=2 order by ti.card_in_no");// 卡信息表中所有的管理员记录

// 定义一个数组来接收黑名单中排序好的管理员卡内码

String arr[][] = dbc.getArr(bf.toString());

// 定义一个数组来接收卡信息表中排序好的管理员卡内码

String listarr[][] = dbc.getArr(bffer.toString());

uploahttp://d_f(arr, file);

// 得到黑名单bat文件的版本号, 初始值为1.0

String vesionSql = "select file_vesion from(select row_number() over(ORDER BY t.file_vesion DESC) num,"

+ "t.file_vesion from lc_t_upgrade_file t where t.file_type=2) where num=1";

String vesion = dbc.getList0(vesionSql);

double ve = 1.0;// 定义黑名单版本编号变量,初始值为1.0

/*

* 数据库中存在旧版本则在版本增加0.1

*/

if (StringUtil.isNotNull(vesion)) {

ve = (Double.parseDouble(vesion) + 0.1);

}

vesion = df.format(ve);

// 版本记录sql语句

String bmcsql = "insert into lc_t_upgrade_file values(" + fileID

+ ",'" + file + "','" + vesion + "','2',sysdate," + UserID

+ ")";

dbc.insertDB(bmcsql);// 持久化到数据库

upload_f(listarr, whiteFile);

// 得到白名单bat文件的版本号, 初始值为1.0

String vesionSql2 = "select file_vesion from(select row_number() over(ORDER BY t.file_vesion DESC) num,"

+ "t.file_vesion from lc_t_upgrade_file t where t.file_type=5) where num=1";

String vesion2 = dbc.getList0(vesionSql2);

double ve2 = 1.0;// 定义白名单版本编号变量,初始值为1.0

/*

* 数据库中存在旧版本则在版本增加0.1

*/

if (StringUtil.isNotNull(vesion2)) {

ve2 = (Double.parseDouble(vesion2) + 0.1);

}

String bfileID = dbc.setOracleGlideValue("LC_T_UPGRADE_FILE");// 得到文件表的序列号

vesion2 = df.format(ve2);

// 版本记录sql语句

String bmcsql2 = "insert into lc_t_upgrade_file values(" + bfileID

+ ",'" + whiteFile + "','" + vesion2 + "','5',sysdate,"

+ UserID + ")";

dbc.insertDB(bmcsql2);// 持久化到数据库

} else {

StringBuffer bf2 = new StringBuffer(1024);

bf2

.append(

"select distinct card_in_no from (select tc.card_in_no")

.append(

" from lc_t_blacklist tb left join lc_t_card_info tc")

.append(

" on tb.card_id = tc.card_id where tc.card_type <> 7")

.append(" and tb.whether_effective = 1 union all select")

.append(" tc.card_in_no from lc_t_card_loss cl left join")

.append(" lc_t_card_info tc on cl.card_id = tc.card_id")

.append(" where tc.card_type <> 7 and cl.whether_effective")

.append(" = 1) t order by t.card_in_no");// 黑名单表及挂失用户表中所有非管理员记录

// 定义一个数组来接收黑用户中排序好的用户卡内码

String arr2[][] = dbc.getArr(bf2.toString());

upload_f(arr2, buserfile);

// 得到黑用户bat文件的版本号, 初始值为1.0

String huserSql = "select file_vesion from(select row_number() over(ORDER BY t.file_vesion DESC) num,"

+ "t.file_vesion from lc_t_upgrade_file t where t.file_type=4) where num=1";

String vesion3 = dbc.getList0(huserSql);

double ves = 1.0;// 定义黑用户版本编号变量,初始值为1.0

/*

* 数据库中存在旧版本则在版本增加0.1

*/

if (StringUtil.isNotNull(vesion3)) {

ves = (Double.parseDouble(vesion3) + 0.1);

}

vesion3 = df.format(ves);

// 版本记录sql语句

String husersql = "insert into lc_t_upgrade_file values(" + fileID

+ ",'" + buserfile + "','" + vesion3 + "','4',sysdate,"

+ UserID + ")";

dbc.insertDB(husersql);// 持久化到数据库

}

}

/**

*

* 方法名称:writeLong 方法描述:向输出流中写长整型

*

* @param input

* @return byte[] version 1.0 author wuxq Sep 28, 2011 10:54:58 AM

*/

public static byte[] writeLong(long input) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

DataOutputStream os = new DataOutputStream(baos);

try {

os.writeLong(Long.reverseBytes(input));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

byte[] b = baos.toByteArray();

return b;

}

/**

*

* 方法名称:upload_f 方法描述:把文件上传到ftp服务器

*

* @param arr

* @param file

* void version 1.0 author wuxq Oct 8, 2011 11:37:27 AM

*/

public static void upload_f(String[][] arr, String file) {

byte by[] = null;

byte[] result = new byte[1];

if (StringUtil.isNotNull(arr)) {

result = new byte[arr.length * 4];

int position = 0;

for (int i = 0; i < arr.length; i++) {

by = writeLong(Long.parseLong(arr[i][0]));

byte list[] = new byte[4];

for (int h = 0; h < list.length; h++) {

list[h] = by[h];

}

for (int g = position; g < position + 4; g++) {

result[g] = list[g - 4 * i];

}

position = position + 4;

}

}

boolean bool = FileUtil.creatWhiteManageFile(result, file);// 创建一个bat文件

if (bool) {

// InputStreamReader isr = new InputStreamReader(new

// FileInputStream(file));

InputStream inp = null;

InputStream inp2 = null;

try {

inp = new BufferedInputStream(new FileInputStream(file));

inp2 = new BufferedInputStream(new FileInputStream(file));

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 截取文件名

String f = file.substring(10, file.length());

// 获取ftp配置信息

SysConstats sc = new SysConstats();

FileUtil.uploadFileFtp(sc.FTPSERVER, sc.FTPUSERNAME,

sc.FTPPASSWORD, sc.ENVELOPERESULTROOT, f, inp, inp2);

}

}

}

更多关于java相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java设计模块系列之书店管理系统单机版(三)
下一篇:jboss配置方法简明教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~