Este artículo describe el método para cargar archivos a un servidor FTP por Java. Compártelo para su referencia, como sigue:
Herramientas:
paquete 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.io.ioexception; import java.iO.InputputputStam java.Text.SimpledateFormat; import java.util.date; importar org.apache.commons.net.ftp.ftpclient; importar org.apache.commons.net.ftp.ftpreply; public class FileUtil { / ** * * @Date 26 de septiembre de 2011 10:17:39 am * @return * DataInputStream getInput () {dataInputStream d = null; intente {d = new DataInputStream (nuevo FileInputStream ("c: /wmc.dat")); regresar D; } Catch (FileNotFoundException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } retorno d; } / ** * * @Date 26 de septiembre de 2011 10:17:44 am * @param whites * @return * @author zhangh * / public static boolean createwhitemanageFile (byte [] blancos, archivo de cadena) {datautputStream d; intente {d = new DataOutputStream (nuevo FileOutputStream (File)); d.write (blancos); d.flush (); } catch (Exception e) {// tODO Auto Generated Block Return False; // E.PrintStackTrace (); } return verdadero; } /** * * @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 (); intente {int respuesta; ftp.connect (url); // ftp.connect (url, puerto); // conectarse al servidor FTP // Si se usa el puerto predeterminado, puede conectarse directamente al servidor FTP usando ftp.connect (url); ftp.login (nombre de usuario, contraseña); // Iniciar respuesta = ftp.getReplyCode (); if (! ftPreply.ispositiveCompletion (respuesta)) {ftp.disconnect (); devolver el éxito; } ftp.changeworkingDirectory (ruta); ftp.storeFile (nombre de archivo, entrada); ftp.logout (); input.close (); éxito = verdadero; } catch (ioException e) {E.PrintStackTrace (); } finalmente {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioException IOE) {}} return éxito; } / ** * * Nombre del método: uploadfileftp * Método Descripción: BlackList, Black User File de User Suboad Ftp Server * @param URL * @param username * @param contraseña * @param ruta * @param nombre de archivo * @param entrada * @param input2 * @return * boolean * versión 1.0 * autor wuxq * oct 26, 2011 3:19:09 pm * / public boolean * boolean * Versión 1.0 * Autor wuxq * oct 26, 2011 3:19:09 pm * / public Boolean * Boolean * Versión 1.0 * Autor Wuxq * Oct 26, 2011 3:19:09 PM * / PARAM uploadFileFtp (String Url, String UserName, String Password, String Rath, String FileName, InputStream Input, InputStream Input2) {date date = new Date (); SimpleDateFormat Formatter = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss"); String time = formatter.format (fecha); éxito booleano = falso; FtpClient ftp = new ftpClient (); intente {int respuesta; ftp.connect (URL); ftp.login (nombre de usuario, contraseña); // Iniciar respuesta = ftp.getReplyCode (); if (! ftPreply.ispositiveCompletion (respuesta)) {ftp.disconnect (); devolver el éxito; } ftp.changeworkingDirectory (ruta); ftp.storeFile (nombre de archivo, entrada); ftp.storeFile (nombre de archivo + time, input2); ftp.logout (); input.close (); éxito = verdadero; } catch (ioException e) {E.PrintStackTrace (); } finalmente {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioException IOE) {}}} return éxito; }}Lea el archivo de configuración:
paquete 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 opache.log4j.logger; import.enets.FrameWork. Clase de frijoles que obtiene información del servidor FTP * * @author wuxq * */public class sysconstats {private static logger log = logger.getlogger (sysconstats.class); cadena estática pública ftpserver; // FTP Servidor Dirección IP IP String estática public ftpusername; // FTP Servidor Nombre de usuario Public String estático ftpPassword; // FTP Servidor contraseña de usuario de usuario Public static String sobreereSulTRoot; // La ruta para almacenar el servidor FTP public Public SysconStats () {intent {inputStream in = new BufferStreal (nuevo No nuevo ((nuevo huella (nuevo ((nuevo siglo, ((nuevo huele, (mar ((no es un diámetro nuevo (marque (mar (marque ((no nuevo ((nuevo (() (() () Sysconstants.public_path.substring (0, sysconstants.public_path.length () - 7) + "/bidfileconfig.properties")); Propiedades prop = new Properties (); prop.load (in); Sysconstats.ftpserver = prop.getProperty ("ftpserver", "ninguno"); Sysconstats.ftpusername = prop.getProperty ("ftpusername", "ninguno"); Sysconstats.ftppassword = prop.getProperty ("ftppassword", "ninguno"); SysconStats.enveloperesultroot = prop.getProperty ("sobereResultroot", "ninguno"); log.debug ("Lea la información de configuración FTP con éxito!"); } catch (ioException e) {log.debug ("¡No se pudo leer información de configuración 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 getenvolloResulTroot () {return sobreReReulTroot; } public static void setengromperesulTroot (String sobreReReSulTroot) {sobreReReSulTroot = sobreseReSulTroot; } public static void main (string args []) {new SysConStats (); }}Sube el archivo FTP:
paquete com.fz.fzbike.biz; import java.io.bufferedInputStream; import java.io.bytearrayOutputStream; import java.io.dataOutputStream; import java.io.fileInputStream; import java.io.filenotException; import java.io.io.io.iOexception; import java.io.io.io.io.io.io. java.text.decimalFormat; import com.enets.basesys.user.vo.uservo; import com.enets.framework.assemble.requesthashnew; import com.enets.framework.database.dbconnection; import.fz.common.util.fileutil; com.fz.fzbike.domain.sysconstats;/** * Cargue el código de la tarjeta en el servidor FTP para generar un archivo BAT * * @author wuxq 2011-09-28 */public class uploadCardinnoftPaction {/** * Nombre del método: Descripción del método de uploadftp: Subiendo el archivo a FTP * * @Param reh * vhid Versión 1.0 Ódicita de Wuxq. 10:38:38 am */ public void uploadftp (requesthashnew reh) {string cardtype = reh.get ("cardtype"). ToString (); Dbconnection dbc = reh.getDbc (); // Link Database dbc.endtran (); // Determinar si está vacío y puede ser una pérdida de informe, salir de la pérdida del informe, salir de la lista negra y obtener el tipo de tarjeta basado en la ID de la tarjeta if (StringUtil.isnull (cardType)) {String CardTypesql = "Seleccione Ci.Card_Type de lc_t_card_info Ci donde Ci.card_id =" + Reh.get ("" Selected ");"); ");"); ");"); ");"); ");"); ");"); ");"); cardtype = dbc.getList0 (cardTypesql); } String top = "c:/upload/"; Archivo de cadena = top + "bmc.dat"; // Defina un directorio para almacenar un archivo de Bat de lista negra temporal cadena Whitfile = top + "wmc.dat"; // Defina un directorio para almacenar el archivo de BAT de la lista blanca temporal string buserfile = top + "buser.dat"; // Defina un directorio para almacenar una cadena temporal de archivo de usuario negro fileID = dbc.setoracleglidevalue ("lc_t_upgrade_file"); // Obtenga el número de serie de la tabla de archivos // Obtenga el ID de usuario actual Uservo Uservo = reh.getUservo (); Cadena userId = uservo.getUserId (); Decimalformat df = new DecimalFormat ("0.0"); if (cardType.equals ("7")) {StringBuffer bf = new StringBuffer (1024); bf .Append ("Seleccione Distints Card_in_No de (seleccione TC.C.CARD_IN_NO") .Append ("Desde lc_t_blacklist tb izquierdo se une lc_t_card_info tc") .Append ("en tb.card_id = tc.card_id donde tc.card_type = 7") .Append ("y tb.ethethethethethether) .Append ("tc.card_in_no desde lc_t_card_loss cl izquierdo se unió") .Append ("lc_t_card_info tc en cl.card_id = tc.card_id donde tc.card_type = 7 y") .pappend ("cl.whether_eficiente = 1) Registro de informes Tabla StringBuffer Brush = new StringBuffer (1024); bffer .append ("Seleccione ti.card_in_no desde lc_t_card_info ti") .append ("donde ti.card_type = 7 y ti.card_make_status = 2 orden por ti.card_in_no"); // todos los registros de administrador en la tabla de información de la carta // define una articulación para recibir la carta de administración. arr [] [] = dbc.getarr (bf.ToString ()); // Definir una matriz para recibir los códigos de tarjeta ordenados en la tabla de información de la tarjeta String String Listenr [] [] = dbc.getarr (bffer.ToString ()); upload_f (arr, archivo); // Obtenga el número de versión del archivo BAT de la lista negra, el valor inicial es 1.0 String vectorsql = "Seleccione file_vesion desde (seleccione row_number () over (orden por t.file_vesion desc) num," + "t.file_vesion desde lc_t_upgrade_file t donde t.file_type = 2) donde num = 1"; Cadena vesion = dbc.getList0 (vesionsql); Doble VE = 1.0; // Defina la variable de número de versión de la lista negra, el valor inicial es 1.0/ * * Si hay una versión anterior en la base de datos, la versión se incrementará en 0.1 */ if (StringUtil.ISNotNull (Vesion)) {Ve = (Double.ParsedOuble (Vesion) + 0.1); } vesion = df.format (VE); // Versión Registro de instrucción SQL String bmcsql = "insertar en lc_t_upgrade_file valores (" + fileid + ", '" + file + "', '" + vesion + "', '2', sysdate," + userId + ")"; dbc.insertdb (bmcsql); // persistir en la base de datos upload_f (listarr, whitefile); // Obtenga el número de versión del archivo BAT de la lista blanca, el valor inicial es 1.0 String vesionsql2 = "Seleccione file_vesion desde (select row_number () over (orden por t.file_vesion desc) desc) Cadena vesion2 = dbc.getList0 (vesionsql2); Double VE2 = 1.0; // Defina la variable de número de versión WhitList, el valor inicial es 1.0/ * * Si hay una versión anterior en la base de datos, la versión se incrementará en 0.1 */ if (stringUtil.ISNotNull (Vesion2)) {Ve2 = (Double.ParsedOuble (Vesion2) + 0.1); } String bfileID = dbc.SetorAcleGlidEvalue ("LC_T_UPGRADE_FILE"); // Obtenga el número de serie de la tabla de archivos Vesion2 = df.format (VE2); // Versión Registro de instrucciones SQL String bmcsql2 = "insertar en lc_t_upgrade_file valores (" + bfileid + ", '" + whitefile + "', '" + vesion2 + "', '5', sysdate," + userid + ")"; dbc.insertdb (bmcsql2); // persistir en la base de datos} else {stringBuffer bf2 = new StringBuffer (1024); bf2 .Append ("Seleccione Distintion Card_in_No desde (seleccione TC.C.CARD_IN_NO") .Append ("Desde LC_T_BLACKLIST TB Left Left LC_T_CARD_INFO TC") .Append ("en tb.card_id = tc.card_id donde tc.Card_Type <> 7") .Append ("y tb.wethether Seleccione ") .Append (" tc.card_in_no desde lc_t_card_loss cl izquierdo se unió ") .Append (" lc_t_card_info tc en cl.card_id = tc.card_id ") .Append (" donde tc.card_type <> 7 y cl.Hether_effective ") .Append (" = 1) T ORDER t.card_in_no "); // Todos los registros no administradores en la tabla de la lista negra e informaron la tabla de usuario perdida // defina una matriz para recibir los códigos de tarjeta de usuario ordenados en los usuarios negros String arr2 [] [] = dbc.getarr (bf2.ToString ()); upload_f (arr2, buserfile); // Obtenga el número de versión del archivo BAT de usuario negro, el valor inicial es 1.0 cadena hsersql = "Seleccione file_vesion desde (select row_number () over (orden por t.file_vesion desc) num," + "t.file_vesion desde lc_t_upgrade_file t donde t.file_type = 4) donde num = 1"; Cadena vesion3 = dbc.getList0 (husersql); Double ves = 1.0; // Definir la variable de número de versión del usuario negro, el valor inicial es 1.0/ * * Si hay una versión anterior en la base de datos, la versión se incrementará en 0.1 */ if (StringUtil.ISNotNull (Vesion3)) {ves = (double.ParsedOuble (Vesion3) + 0.1); } vesion3 = df.format (ves); // Versión Registro de la instrucción SQL String husersql = "Insertar en lc_t_upgrade_file valores (" + fileid + ", '" + buserfile + "', '" + vesion3 + "', '4', sysdate," + userId + ")"; dbc.insertdb (husersql); // persistir en la base de datos}}/ ** * * Nombre del método: WriteLong Método Descripción: Escriba el número entero largo en la transmisión de salida * * @param Entrada * @return byte [] Versión 1.0 Autor Wuxq 28 de septiembre, 2011 10:54:58 AM */ Public estatic Byte [] Writelong (INTIGURA LARGO) {BYTAUXAUT BytearRayOutputStream (); DataOutputStream OS = new DataOutputStream (BAOS); intente {OS.WriteLong (long.RaveSebytes (entrada)); } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); } byte [] b = baos.tobytearray (); regreso B; } / ** * * Nombre del método: upload_f Descripción del método: cargue el archivo en el servidor FTP * * @param arr * @param * void versión 1.0 autor wuxq 8 de octubre de 2011 11:37:27 am * / public static void upload_f (string [] [] arr, string archivo) {byte por [] = null; byte [] resultado = nuevo byte [1]; if (stringUtil.isNotNull (arr)) {result = new Byte [arr.Length * 4]; INT POSICIÓN = 0; for (int i = 0; i <arr.length; i ++) {by = writeLong (long.parselong (arr [i] [0])); Lista de bytes [] = nuevo byte [4]; for (int h = 0; h <list.length; h ++) {list [h] = by [h]; } para (int g = posición; g <posición+4; g ++) {resultado [g] = list [g - 4 * i]; } posición = posición + 4; }} boolean bool = fileutil.ceatwhitemanageFile (resultado, archivo); // Crear un archivo BAT if (bool) {// inputStreamReader isr = new InputStreamReader (nuevo // fileInputStream (archivo)); InputStream inp = null; InputStream inp2 = null; intente {inp = new BufferedInputStream (new FileInputStream (File)); inp2 = new BufferedInputStream (nuevo FileInputStream (File)); } Catch (FileNotFoundException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } // interceptar la cadena del nombre del archivo f = file.substring (10, file.length ()); // Obtener información de configuración FTP sysconstats sc = new SysConStats (); Fileutil.uploadfileftp (sc.ftpserver, sc.ftpusername, sc.ftppassword, sc.enveloperesultroot, f, inp, inp2); }}}Para obtener más información sobre el contenido relacionado con Java, consulte los temas de este sitio: "Resumen de archivos Java y habilidades de operación de directorio", "Tutorial sobre estructuras de datos de Java y algoritmos", "Resumen de las habilidades de operación de nodo de operación DOM Java" y "Resumen de habilidades de operación de caché de Java"
Espero que este artículo sea útil para la programación Java de todos.