En el desarrollo del programa Java, FTP se usa con mayor frecuencia y a menudo se ocupa de él, como cargar y descargar archivos en el servidor FTP. Este artículo le presenta cómo usar el FTPClient en Yakarta Commons (en el paquete Commons-Net) para cargar y descargar archivos.
1. Cargar archivos
No presentaré el principio, lea el código directamente
/** * Descripción: cargar el archivo en el servidor FTP * @versión1.0 27 de julio de 2008 4:31:09 PM por Cui Hongbao ([email protected]) Crear * @param URL FTP Server Hostname * @param Port Ftp Server Port * @Param Username FTP Cuenta de logine * @param Passions Ftp Hostname * @Param Port Ftp Servidor * @Param username ftp Cuenta de logine * @param PASCASEY FTP PASCASEY * @param * @param FileName Cargue en el servidor FTP * @Param Entrada de entrada Stream * @return return TRIETamente, de lo contrario return False */ publicstaticBoolean uploadFile (string url, int port, string username, string contraseña, string ruta, string fileName, inputStream input) {boolean success = false; FtpClient ftp = new ftpClient (); intente {int respuesta; ftp.connect (url, puerto); // Conecte el servidor FTP // Si se usa el puerto predeterminado, puede conectarse directamente al servidor FTP utilizando 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); input.close (); ftp.logout (); éxito = verdadero; } catch (ioException e) {E.PrintStackTrace (); } finalmente {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioException IOE) {}}} return éxito; } <pre> </pre> /*** Descripción: Cargar archivo en el servidor FTP* @versión1.0 27 de julio de 2008 4:31:09 PM por Cui Hongbao ([email protected]) Crear* @param url ftp servidor hostnnnnnnniM Path FTP Server Save Directory* @param FileName Subload en el servidor FTP* @param Input Input Stream* @return return true. Respuesta; ftp.connect (url, puerto); // Conecte el servidor FTP // Si se usa el puerto predeterminado, puede conectarse directamente al servidor FTP usando ftp.connect (url); ftp.login (useName, contraseña); // respuesta = ftp.getRepyCode (); if (if (ftPreply.IsSIsPISTECOLTERION (RESPUESTA) {ftp.disconnect (); return éxito;} ftp.changeworkingDirectory (ruta); ftp.storeFile (nombre de archivo, entrada); input.close (); ftp.logout (); sitsing = true;} catch (ioException e) {E.PrintStackTrace ();} finalmente {if (ftp.isconnected ()) {try {ftp.disconnect ();} catch (ioException IOE) {}} de regreso;}
Escribamos dos pequeños ejemplos:
1. Cargue el archivo local en el servidor FTP, el código es el siguiente:
@Test publicvoid testuploadFromDisk () {try {fileInputStream in = new FileInputStream (nuevo archivo ("d: /test.txt")); Boolean Flag = uploadFile ("127.0.0.1", 21, "test", "test", "d:/ftp", "test.txt", in); System.out.println (bandera); } catch (FileNotFoundException e) {E.PrintStackTrace (); }} <pre> </pre> @testpublic void testuploadFromDisk () {try {fileInputStream in = new FileInputStream (nuevo archivo ("d: /test.txt")); boolean flag = uploadFile ("127.0.0.1", 21, "Test", "Test", "d:/ftp", "Test.txt", "Test. in); System.out.println (Flag);} Catch (FileNotFoundException e) {E.PrintStackTrace 2. Genere un archivo en el servidor FTP y escriba una cadena en el archivo
@Test publicvoid testUploadFromString () {try {inputStream input = new ByteArrayInputStream ("Test ftp" .getBytes ("utf-8")); Boolean Flag = uploadFile ("127.0.0.1", 21, "prueba", "prueba", "d:/ftp", "test.txt", entrada); System.out.println (bandera); } catch (UnsupportedEncodingException e) {E.PrintStackTrace (); } }<pre></pre> @Testpublic void testUpLoadFromString(){try {InputStream input = new ByteArrayInputStream("test ftp".getBytes("utf-8"));boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", entrada); System.out.println (Flag);} Catch (UnsupportedEncodingException e) {E.PrintStackTrace 2. Descargue el archivo
El código para descargar archivos de un servidor FTP también es muy simple, consultelo de la siguiente manera:
/*** Descripción: Descargue el archivo del servidor FTP* @Version. Jul, :: PM por Cui Hongbao ([email protected]) Crear* @param url ftp servidor hostname* @param puerto ftp servidor puerto* @param cuenta ftp ftp Cuenta de registro* @param contraseña ftp contraseña* @param ruta remotepath relativa en el servidor de ftp* @param filename nombre de archivo que se descargará con contraseña ftp* @param remotepath remotepath al local después de descargar * @return */ publicstaticBoolean Downfile (String url, int port, string username, string contraseña, string remotePath, string filename, string localpath) {boolean éxito = false; FtpClient ftp = new ftpClient (); intente {int respuesta; ftp.connect (url, puerto); // 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 (remotePath); // transferir al directorio del servidor FTP ftpfile [] fs = ftp.listFiles (); for (ftpfile ff: fs) {if (ff.getName (). Equals (FileName)) {file localFile = new File (localpath+"/"+ff.getName ()); OutputStream es = nuevo FileOutputStream (LocalFile); ftp.retrieveFile (ff.getName (), is); is.close (); }} ftp.logout (); éxito = verdadero; } catch (ioException e) {E.PrintStackTrace (); } finalmente {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioException IOE) {}}} return éxito; } <pre> </pre>