この記事では、JavaによってFTPサーバーにファイルをアップロードする方法について説明します。次のように、参照のために共有してください。
ツール:
パッケージcom.fz.common.util; Import java.io.datainputStream; Import java.io.dataoutputStream; Import java.io.fileinputStream; Import java.io.fileenotfoundexception; Import java.io.fileoutputStream; Import java.io.io.ioeexception; Import java.io.ioexception; java.text.simpledateformat; Import java.util.date; Import org.apache.commons.net.ftpclient; Import org.apache.commons.net.ftp.ftply; public class fileutil { / * * * * @date sep 26、1010:17:39 am * @return * @return * / return datainputStream getInput(){datainputStream d = null; try {d = new DatainputStream(new FileInputStream( "c:/wmc.dat")); d; } catch(filenotfoundexception e){// dodo auto-enerated catch block e.printstacktrace(); } return d; } / ** * * @Date 2011年9月26日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(白); D.Flush(); } catch(Exception e){// todo auto-enerated catch block return false; // e.printstacktrace(); } trueを返します。 } / ** * * @date 2011年9月16日4:39:22 pm * @param url * @param username * @param path * @param filename * @param input * @return * @author zhangh * / public static boolean uploadfile(String urname、String Path、String Path、String Pathreanm ftpclient ftp = new ftpclient(); {int Reply; ftp.connect(url); // ftp.connect(url、port); // ftpサーバーに接続する//デフォルトのポートを使用する場合、ftp.connect(url)を使用してFTPサーバーに直接接続できます。 ftp.login(username、password); // login neply = ftp.getReplyCode(); if(!ftpreply.ispositiveCompletion(reply)){ftp.disconnect();成功を返す; } ftp.changeworkingdirectory(path); ftp.storefile(filename、input); ftp.logout(); input.close();成功= true; } catch(ioexception e){e.printstacktrace(); }最後に{if(ftp.isconnected()){try {ftp.disconnect(); } catch(ioexception ioe){}} return success; } / ** * *メソッド名:uploadfileftp *メソッド説明:ブラックリスト、ブラックユーザーファイルftp server * @param url * @param username * @param passward * @param path * @param input * @param input2 * @return * boolean * version 1.0 *著者wuxq * Oct 26、2011 3:10 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);ブールの成功= false; ftpclient ftp = new ftpclient(); {int Reply; ftp.connect(url); ftp.login(username、password); // login Reply = ftp.getReplyCode(); if(!ftpreply.ispositiveCompletion(reply)){ftp.disconnect();成功を返す; } ftp.changeworkingdirectory(path); ftp.storefile(filename、input); ftp.storefile(filename + time、input2); ftp.logout(); input.close();成功= true; } catch(ioexception e){e.printstacktrace(); }最後に{if(ftp.isconnected()){try {ftp.disconnect(); } catch(ioexception ioe){}}} return success; }}構成ファイルを読む:
パッケージcom.fz.fzbike.domain; Import java.io.bufferedinputStream; Import java.io.fileinputStream; import java.io.ioexception; Import java.util.properties; import org.apache.log4j.logger; * 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 serverユーザー名public static string ftppassword; // ftpサーバーユーザーパスワードpublic static string enpealteresultoot; // ftpサーバーを格納するパスパスftpサーバーパブリックsysconstats() sysconstants.public_path.substring(0、sysconstants.public_path.length() - 7) + "/bidfileconfig.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をアップロードします:
パッケージcom.fz.fzbike.biz; Import java.io.bufferedinputStream; Import java.io.bytearrayoutputStream; Import java.io.dataoutputStream; Import java.io.fileinputStream; Import java.io.io.fileenotfoundexception; Import.io.io.io.io.io.io.io.io.io.ioexception; 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 {/** * *メソッド名:アップロードfiid著者のアップロード10:38:38 am */ public void uploadftp(requesthashnew reh){string cardtype = reh.get( "cardType")。toString(); dbconnection dbc = reh.getdbc(); // link database dbc.endtran(); //空のかどうかを判断し、レポートの損失であるかどうかを判断し、レポートの損失を終了し、ブラックリストを終了し、カードIDに基づいてカードタイプを取得します(stringutil.isnull(cardtype)){string cardtypesql = " cardType = dbc.getList0(cardTypesQL); } string top = "c:/upload/"; string file = top + "bmc.dat"; //一時的なブラックリストバットファイルストリングを保存するディレクトリを定義しますwhitefile = top + "wmc.dat"; //ディレクトリを定義して一時ホワイトリストのバットファイルstring buserfile = top + "buser.dat"; //一時的なブラックユーザーファイルstring fileId = dbc.setoracleglideValue( "lc_t_upgrade_file"); //ファイルのシリアル番号を取得するためのディレクトリを定義します。 string userid = uservo.getuserid(); DecimalFormat df = new DecimalFormat( "0.0"); if(cardtype.equals( "7")){stringbuffer bf = new StringBuffer(1024); bf .append( "(select tc.card_in_no"から異なるcard_in_noを選択)。 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 ").aptend(" cl.wherthed by digstraged_no ");ブラックリストとレポートレコードテーブルStringBuffer Brush = new StringBuffer(1024); bffer .append( "lc_t_card_info ti"からti.card_in_noを選択 ").append(" "ここで、ti.card_type = 7およびti.card_make_status = 2注文ti.card_in_no"); arr [] [] = dbc.getarr(bf.tostring()); //配列を定義して、カード情報テーブルでソートされたカードコードを受信しますstring ristenr [] = dbc.getarr(bffer.tostring()); upload_f(arr、file); //ブラックリストのバットファイルのバージョン番号を取得します。初期値は1.0 string vectorsql = "row_number()over(t.file_vesion desc)num、" + "t.file_vesion from lc_t_upgrade_file t from lc_t_upgrade_file t from t.file_file t from select row_number()over(select row_vesion desc)です。文字列VESION = DBC.GETLIST0(VESIONSQL); double Ve = 1.0; //ブラックリストバージョン番号変数を定義する、初期値はデータベースに古いバージョンがある場合、バージョンは0.1 */ if(stringutil.isnotnull(version)){ve =(double.ParseDouble(vision) + 0.1); } version = df.format(ve); // version record sqlステートメント文字列bmcsql = "lc_t_upgrade_file値(" + fileid + "、 '" + file + "'、 '" + vesion + "'、 '2'、sysdate、" + userId + ")"; dbc.insertdb(bmcsql); //データベースupload_f(listArr、whitefile)に持続します。 //ホワイトリストのバットファイルのバージョン番号を取得すると、初期値は1.0 string versionsql2 = "select row_number()over(t.file_vesion desc)num、" + "t.file_vesion from lc_t_upgrade_file t from lc_t_upgrade_file t 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 =(ve2 =(double.parsedouble(vesion2) + 0.1); } string bfileid = dbc.setoracleglideValue( "lc_t_upgrade_file"); //ファイルテーブルのシリアル番号を取得vesion2 = df.format(ve2); //バージョンレコードsqlステートメント文字列bmcsql2 = "lc_t_upgrade_file値(" + bfileid + "、 '" + whitefile + "'、 '" + vesion2 + "'、 '5'、sysdate、" + userid + ")"; dbc.insertdb(bmcsql2); // databaseに持続} else {stringbuffer bf2 = new stringbuffer(1024); bf2 .append( "(select tc.card_in_no"から異なるcard_in_noを選択).append( "from lc_t_blacklist tb left join left join lc_t_card_info tc")。 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(" T.card_in_no "); //ブラックリストテーブルのすべての非アドミニストレーターレコードと紛失したユーザーテーブルの報告//黒人ユーザーstring arr2 [] = dbc.getarr(bf2.tostring())でソートされたユーザーカードコードを受信する配列を定義します。 upload_f(arr2、buserfile); //ブラックユーザーバットファイルのバージョン番号を取得すると、初期値は1.0 string hsersql = "select file_vesion from(select row_number()over(t.file_vesion desc)num、" + "t.file_vesion from lc_t_upgrade_file t from t.file_type = 4)where num = 1"; string version3 = dbc.getlist0(husersql); double ves = 1.0; //ブラックユーザーバージョン番号変数を定義します。初期値は1.0/ * *データベースに古いバージョンがある場合、バージョンは0.1 */ if(stringutil.isnotnull(vesion3)){ves =(double.parsedouble(vision3) + 0.1); } vesion3 = df.format(ves); // rescord sqlステートメントstring husersql = "lc_t_upgrade_file値に挿入(" + fileid + "、 '" + buserfile + "'、 '" + vesion3 + "'、 '4'、sysdate、" + userid + ")"; dbc.insertdb(husersql); //データベースに保持}}/ ** * *方法名:書き込みメソッド説明:出力ストリームに長い整数を書き込む * * @param入力 * @return byte []著者wuxq 2011年9月28日10:54:58 am bytearrayoutputStream(); dataoutputStream os = new DataOutputStream(BAOS); try {os.writeLong(long.ReverseBytes(input)); } catch(ioException e){// todo auto-fenated catch block e.printstacktrace(); } byte [] b = baos.tobytearray(); bを返します。 } / ** * *メソッド名:upload_fメソッド説明:ファイルをFTPサーバーにアップロード * * @param arr * @param file * voidバージョン1.0著者wuxq 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]));バイトリスト[] = 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 file 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){// dodo auto-enerated catch block e.printstacktrace(); } //ファイル名をインターセプトする文字列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操作の操作スキルの概要」、「Java Cache操作スキルの要約」
この記事がみんなのJavaプログラミングに役立つことを願っています。