最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)將文件上傳到ftp服務(wù)器的方法

 更新時(shí)間:2016年08月23日 09:38:47   作者:xiangqian0505  
這篇文章主要介紹了java實(shí)現(xiàn)將文件上傳到ftp服務(wù)器的方法,結(jié)合實(shí)例形式分析了基于java實(shí)現(xiàn)的ftp文件傳輸類(lèi)定義與使用方法,需要的朋友可以參考下

本文實(shí)例講述了java實(shí)現(xiàn)將文件上傳到ftp服務(wù)器的方法。分享給大家供大家參考,具體如下:

工具類(lèi):

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服務(wù)器
  // 如果采用默認(rèn)端口,可以使用ftp.connect(url)的方式直接連接FTP服務(wù)器
  ftp.login(username, password);// 登錄
  reply = ftp.getReplyCode();
  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;
 }
 /**
 *
 * 方法名稱(chēng):uploadFileFtp
 * 方法描述:黑名名單,黑用戶(hù)文件上傳ftp服務(wù)器
 * @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服務(wù)器信息的bean類(lèi)
 *
 * @author wuxq
 *
 */
public class SysConstats {
 private static Logger log = Logger.getLogger(SysConstats.class);
 public static String FTPSERVER;// ftp服務(wù)器ip地址
 public static String FTPUSERNAME;// ftp服務(wù)器用戶(hù)名
 public static String FTPPASSWORD;// ftp服務(wù)器用戶(hù)密碼
 public static String ENVELOPERESULTROOT;// 存放ftp服務(wù)器的路徑
 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;
/**
 * 上傳卡內(nèi)碼到ftp服務(wù)器 生成bat文件
 *
 * @author wuxq 2011-09-28
 */
public class UploadCardInNoFtpAction {
 /**
 *
 * 方法名稱(chēng):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();// 鏈接數(shù)據(jù)庫(kù)
 dbc.endTran();
 // 判斷是否是空值 空有可能是掛失,退出掛失, 退出黑名單, 根據(jù)卡id得到卡類(lèi)型
 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"; // 定義一個(gè)目錄存放臨時(shí)的黑名單bat文件
 String whiteFile = top + "wmc.dat";// 定義一個(gè)目錄存放臨時(shí)的白名單bat文件
 String buserfile = top + "buser.dat"; // 定義一個(gè)目錄存放臨時(shí)的黑用戶(hù)文件
 String fileID = dbc.setOracleGlideValue("LC_T_UPGRADE_FILE");// 得到文件表的序列號(hào)
 // 得到當(dāng)前用戶(hù)的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");// 卡信息表中所有的管理員記錄
  // 定義一個(gè)數(shù)組來(lái)接收黑名單中排序好的管理員卡內(nèi)碼
  String arr[][] = dbc.getArr(bf.toString());
  // 定義一個(gè)數(shù)組來(lái)接收卡信息表中排序好的管理員卡內(nèi)碼
  String listarr[][] = dbc.getArr(bffer.toString());
  upload_f(arr, file);
  // 得到黑名單bat文件的版本號(hào), 初始值為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;// 定義黑名單版本編號(hào)變量,初始值為1.0
  /*
  * 數(shù)據(jù)庫(kù)中存在舊版本則在版本增加0.1
  */
  if (StringUtil.isNotNull(vesion)) {
  ve = (Double.parseDouble(vesion) + 0.1);
  }
  vesion = df.format(ve);
  // 版本記錄sql語(yǔ)句
  String bmcsql = "insert into lc_t_upgrade_file values(" + fileID
   + ",'" + file + "','" + vesion + "','2',sysdate," + UserID
   + ")";
  dbc.insertDB(bmcsql);// 持久化到數(shù)據(jù)庫(kù)
  upload_f(listarr, whiteFile);
  // 得到白名單bat文件的版本號(hào), 初始值為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;// 定義白名單版本編號(hào)變量,初始值為1.0
  /*
  * 數(shù)據(jù)庫(kù)中存在舊版本則在版本增加0.1
  */
  if (StringUtil.isNotNull(vesion2)) {
  ve2 = (Double.parseDouble(vesion2) + 0.1);
  }
  String bfileID = dbc.setOracleGlideValue("LC_T_UPGRADE_FILE");// 得到文件表的序列號(hào)
  vesion2 = df.format(ve2);
  // 版本記錄sql語(yǔ)句
  String bmcsql2 = "insert into lc_t_upgrade_file values(" + bfileID
   + ",'" + whiteFile + "','" + vesion2 + "','5',sysdate,"
   + UserID + ")";
  dbc.insertDB(bmcsql2);// 持久化到數(shù)據(jù)庫(kù)
 } 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");// 黑名單表及掛失用戶(hù)表中所有非管理員記錄
  // 定義一個(gè)數(shù)組來(lái)接收黑用戶(hù)中排序好的用戶(hù)卡內(nèi)碼
  String arr2[][] = dbc.getArr(bf2.toString());
  upload_f(arr2, buserfile);
  // 得到黑用戶(hù)bat文件的版本號(hào), 初始值為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;// 定義黑用戶(hù)版本編號(hào)變量,初始值為1.0
  /*
  * 數(shù)據(jù)庫(kù)中存在舊版本則在版本增加0.1
  */
  if (StringUtil.isNotNull(vesion3)) {
  ves = (Double.parseDouble(vesion3) + 0.1);
  }
  vesion3 = df.format(ves);
  // 版本記錄sql語(yǔ)句
  String husersql = "insert into lc_t_upgrade_file values(" + fileID
   + ",'" + buserfile + "','" + vesion3 + "','4',sysdate,"
   + UserID + ")";
  dbc.insertDB(husersql);// 持久化到數(shù)據(jù)庫(kù)
 }
 }
 /**
 *
 * 方法名稱(chēng):writeLong 方法描述:向輸出流中寫(xiě)長(zhǎng)整型
 *
 * @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;
 }
 /**
 *
 * 方法名稱(chēng):upload_f 方法描述:把文件上傳到ftp服務(wù)器
 *
 * @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);// 創(chuàng)建一個(gè)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);
 }
 }
}

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • SpringMVC中的DispatcherServlet結(jié)構(gòu)和初始化詳解

    SpringMVC中的DispatcherServlet結(jié)構(gòu)和初始化詳解

    這篇文章主要介紹了SpringMVC中的DispatcherServlet結(jié)構(gòu)和初始化詳解,SpringMVC中Spring容器的關(guān)系是通過(guò)監(jiān)聽(tīng)方式啟動(dòng)的,那么Spring與Servlet的Web容器(如:Tomcat、jetty)的關(guān)系則是通過(guò)DispatcherServlet進(jìn)行關(guān)聯(lián),需要的朋友可以參考下
    2024-01-01
  • Java SpringBoot自動(dòng)配置原理詳情

    Java SpringBoot自動(dòng)配置原理詳情

    這篇文章主要介紹了Java SpringBoot自動(dòng)配置原理詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • java Spring松耦合高效應(yīng)用簡(jiǎn)單實(shí)例分析

    java Spring松耦合高效應(yīng)用簡(jiǎn)單實(shí)例分析

    在Java項(xiàng)目,龐大的對(duì)象依賴(lài)關(guān)系將一直緊密耦合引起對(duì)象難以管理或修改。在這種情況下,可以使用Spring框架作為一個(gè)核心模塊輕松高效地管理所有的對(duì)象依賴(lài)。本文章向大家介紹Spring松耦合的實(shí)例,需要的朋友可以參考一下。
    2016-12-12
  • Java停止線程的3種方法

    Java停止線程的3種方法

    這篇文章主要分享Java停止線程的3種方法,分別是自定義中斷標(biāo)識(shí)符,停止線程、使用線程中斷方法interrupt停止線程、使用stop停止線程。下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-05-05
  • 一文學(xué)會(huì)使用sa-token解決網(wǎng)站權(quán)限驗(yàn)證

    一文學(xué)會(huì)使用sa-token解決網(wǎng)站權(quán)限驗(yàn)證

    這篇文章主要為大家介紹了使用sa-token解決網(wǎng)站權(quán)限驗(yàn)證方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例

    java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例

    這篇文章主要介紹了本文主要介紹了java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • XML解析四種方式代碼示例詳解

    XML解析四種方式代碼示例詳解

    這篇文章主要介紹了XML解析四種方式代碼示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • IDEA2020.2.3中創(chuàng)建JavaWeb工程的完整步驟記錄

    IDEA2020.2.3中創(chuàng)建JavaWeb工程的完整步驟記錄

    這篇文章主要給大家介紹了關(guān)于IDEA2020.2.3中創(chuàng)建JavaWeb工程的完整步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java批量從svn導(dǎo)出多個(gè)項(xiàng)目代碼實(shí)例

    Java批量從svn導(dǎo)出多個(gè)項(xiàng)目代碼實(shí)例

    這篇文章主要介紹了java批量從svn導(dǎo)出多個(gè)項(xiàng)目代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java面試重點(diǎn)中的重點(diǎn)之Elasticsearch核心原理

    Java面試重點(diǎn)中的重點(diǎn)之Elasticsearch核心原理

    ElasticSearch是一個(gè)基于Lucene的搜索引擎,是用Java語(yǔ)言開(kāi)發(fā)的,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便,作為Apache許可條款下的開(kāi)放源碼發(fā)布,是一種流行的企業(yè)級(jí)搜索引擎,是最受歡迎的企業(yè)搜索引擎
    2022-01-01

最新評(píng)論

连南| 招远市| 正定县| 南陵县| 广宁县| 揭西县| 迁西县| 沭阳县| 广州市| 淄博市| 南皮县| 康保县| 犍为县| 含山县| 泾源县| 巩留县| 桂林市| 皮山县| 千阳县| 盐山县| 宁夏| 化德县| 会理县| 历史| 准格尔旗| 龙井市| 黄陵县| 六枝特区| 乃东县| 辽宁省| 信阳市| 襄垣县| 昌都县| 平南县| 河池市| 柏乡县| 盐山县| 永兴县| 阜城县| 阿拉善左旗| 武义县|