No desenvolvimento do programa Java, o FTP é usado com mais frequência e geralmente lida com ele, como fazer upload e download de arquivos para o servidor FTP. Este artigo apresenta como usar o FTPClient no Jacarta Commons (no pacote Commons-Net) para fazer upload e baixar arquivos.
1. Faça o upload de arquivos
Não vou apresentar o princípio, leia o código diretamente
/** * Descrição: Arquivo de upload para o servidor FTP * @versão1.0 27 de julho de 2008 16:31:09 PM por Cui Hongbao ([email protected]) Crie * @param URL FTP LOGIN LOGIN HOSTNAME * @PARAM PORT FTP FTP * @Param FileName Upload para o servidor FTP* @param Entrada de entrada Stream* @return retornar true com sucesso, caso contrário, retorne false*/ publicstaticBoolean uploadFile (string url, int porta, string nome de usuário, senha de string, string path, string filename, inputStream input) {boolean success = false; FtpClient ftp = new ftpClient (); tente {int Responder; ftp.connect (url, porta); // conecte o servidor FTP // Se a porta padrão for usada, você poderá conectar diretamente ao servidor FTP usando ftp.connect (url); ftp.login (nome de usuário, senha); // Login Responder = ftp.getReplyCode (); if (! ftPreply.ispositiveCeliction (Responder)) {ftp.disconnect (); sucesso de sucesso; } ftp.ChangeWorkingDirectory (caminho); ftp.storefile (nome do arquivo, entrada); input.Close (); ftp.logout (); sucesso = true; } catch (ioexception e) {e.printStackTrace (); } finalmente {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioexception ioe) {}}} retornar sucesso; } <pre> </pre> /*** Descrição: Faça o upload do arquivo para o servidor FTP* @versão1.0 27 de julho de 2008 16:31:09 PM por Cui Hongbao ([email protected]) Criar* @param url ftp server hostname* @param Port Ftp Fter Server port* @param usernAmin Ftp Server HostName* FTP Server Salvar Diretório* @param FileName Name Upload Para o servidor FTP* @Param Fluxo de entrada de entrada* @RETURN retornar TRUE TRUE, caso contrário, retorne False*/public static boolean uploadfile (string url, intt, string username, string senha, string Path, string filename, inputStramstReam input) {boolean success = Falsen; Responder; ftp.connect (url, porta); // conectar o servidor FTP // se a porta padrão for usada, você poderá conectar diretamente ao servidor FTP usando ftp.connect (url); ftp.login (nome de usuário, senha); // Login Responder = ftp.GeretryplyCode (); se (! {ftp.disconnect (); retorno sucesso;} ftp.ChangeWorkingDirectory (caminho); ftp.StoreFile (nome do arquivo, entrada); input.close (); ftp.logout (); succcess = true;} catch (ioexception e) {e.printStacktrace ();} finalmente {if (ftp.isconnected ()) {tente {ftp.disconnect ();} catch (ioexception ioe) {}}}}
Vamos escrever dois pequenos exemplos:
1. Carregue o arquivo local para o servidor FTP, o código é o seguinte:
@Test publicVoid testUploadFromDisk () {try {FileInputStream in = new FileInputStream (novo File ("d: /test.txt")); sinalizador booleano = uploadfile ("127.0.0.1", 21, "teste", "teste", "d:/ftp", "test.txt", in); System.out.println (sinalizador); } catch (filenotfoundException e) {e.printStackTrace (); }} <pre> </pre> @testpublic void testUploadFromDisk () {try {FileInputStream em = new FileInputStream (novo File ("d: /test.txt"); bandeira boolean = uploadfile ("127.0.0.1", 21, "test in); system.out.println (flag);} catch (filenotfoundException e) {e.printStackTrace ();}} 2. Gere um arquivo no servidor FTP e escreva uma string no arquivo
@Test publicVoid testUploadFromString () {try {inputStream input = new ByteArrayInputStream ("teste ftp" .getBytes ("utf-8")); sinalizador booleano = uploadfile ("127.0.0.1", 21, "teste", "teste", "d:/ftp", "test.txt", entrada); System.out.println (sinalizador); } Catch (UnsupportEdEncodingException e) {E.PrintStackTrace (); }} <pre> </pre> @testpublic void testUploadFromString () {try {inputStream input = new ByteArrayInputStream ("teste ftp" .getBytes ("utf-8")); boolean sinalizador = uploadfile ("127.0.1" "21, 21"); "test.txt", input); system.out.println (flag);} catch (não suportesEnCodingException e) {e.printStackTrace ();}} 2. Faça o download do arquivo
O código para baixar arquivos de um servidor FTP também é muito simples, consulte o seguinte:
/*** Descrição: Faça o download do arquivo do servidor FTP* @version. Jul, :: pm por cui hongbao ([email protected]) criar* @param url ftp servidor hostname* @param porta ftp servidor porta* @param nome de usuário ftp login conta* @param senha ftp login senha* @param remoTePath Relative Path no servidor ftp* Download * @return */ publicstaticBoolean DownFile (String URL, INT porta, String UserName, String Senha, String remotepath, String filename, String LocalPath) {Boolean Success = false; FtpClient ftp = new ftpClient (); tente {int Responder; ftp.connect (url, porta); // Se a porta padrão for usada, você poderá se conectar diretamente ao servidor FTP usando ftp.connect (url); ftp.login (nome de usuário, senha); // Login Responder = ftp.getReplyCode (); if (! ftPreply.ispositiveCeliction (Responder)) {ftp.disconnect (); sucesso de sucesso; } ftp.ChangeWorkingDirectory (remotepath); // Transfer para o diretório do servidor FTP ftpfile [] fs = ftp.ListFiles (); para (ftpfile ff: fs) {if (ff.getName (). Equals (FileName)) {arquivo localfile = new File (localPath+"/"+ff.getName ()); OutputStream is = new FileOutputStream (LocalFile); ftp.retrievefile (ff.getName (), é); is.close (); }} ftp.logout (); sucesso = true; } catch (ioexception e) {e.printStackTrace (); } finalmente {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioexception ioe) {}}} retornar sucesso; } <pre> </pre>