O FTP é a abreviação inglesa do protocolo de transferência de arquivos (protocolo de transferência de arquivos) e a abreviação chinesa é chamada de "protocolo de transferência por escrito". Usado para transferência bidirecional de arquivos de controle na Internet. Ao mesmo tempo, também é um aplicativo. Existem diferentes aplicativos FTP com base em diferentes sistemas operacionais e todos esses aplicativos aderem ao mesmo protocolo para transferir arquivos. No uso do FTP, os usuários geralmente encontram dois conceitos: "Download" e "Upload". "Download" arquivos "significa copiar arquivos do host remoto para o seu próprio computador; "Carregar arquivos" significa copiar arquivos do seu próprio computador para o host remoto. No idioma da Internet, os usuários podem fazer upload (baixar) arquivos para (de) hosts remotos através de programas de clientes.
Primeiro, o Serv-U foi baixado para configurar seu computador como um servidor de arquivos FTP para facilitar a operação. O código a seguir é usado no servidor FTP e os dados relevantes da conexão FTP devem ser gravados no código para concluí -lo.
1. Carregue e download de arquivos FTP (observe que é upload e download de arquivos individuais)
importar java.io.file; importar java.io.fileInputStream; importar java.io.filenotfoundException; importar java.io.fileOutputStream; import java.io.ioexception; importação java.io.inputStream; import java.io.outStream; importação; org.apache.commons.net.ftp.ftpclient; importar org.apache.commons.net.ftp.ftpfile; importar org.apache.commons.net.ftp.ftPeient; codificação de string estática privada = system.getProperty ("file.encoding"); /** * Description: Upload files to the FTP server* * @Version1.0 * @param url * FTP server hostname * @param port * FTP server port* @param username * FTP login account* @param password * FTP login password* @param path * FTP server saves directory, if it is the root directory, it is "/" * @param filename * File name uploaded to the FTP Server * @Param Input * Fluxo de entrada de arquivo local * @return Retorne true com sucesso, caso contrário, ele retornará false */ public estático boolean uploadFile (URL da String, Int Port, String Username, String Senha, String Path, String FileName, InputStream Input) {resultado boolean = false; tente {int Responder; // Se você usar a porta padrão, poderá se conectar diretamente ao servidor FTP ftpClient.Connect (URL); // ftp.connect (url, porta); // conectar o servidor FTP // efetuar login no ftpclient.login (nome de usuário, senha); ftpClient.SetControlEncoding (codificação); // Verifique se a conexão é bem -sucedida resposta = ftpClient.getReplyCode (); if (! ftpreply.ispositiveciction (resposta)) {System.out.println ("Falha na conexão"); ftpClient.disconnect (); resultado de retorno; } // Transfira o diretório de trabalho para o diretório especificado, alteração booleana = ftpclient.ChangeWorkingDirectory (caminho); ftpClient.SetFileType (ftp.binary_file_type); if (alteração) {resultado = ftpclient.storefile (new String (filename.getBytes (codificação), "ISO-8859-1"), entrada); if (resultado) {System.out.println ("Carregado com sucesso!"); }} input.close (); ftpClient.logout (); } catch (ioexception e) {e.printStackTrace (); } finalmente {if (ftpClient.isconnected ()) {try {ftpclient.disconnect (); } catch (ioexception iOe) {}}} Retornar resultado; }/*** Carregue arquivos locais para o servidor FTP**/public void testUploadFromDisk () {try {FileInputStream in = new FileInputStream (novo File ("d: /test02/list.txt"); sinalizador booleano = uploadfile ("10.0.0.102", 21, "admin", "123456", "/", "lis.txt", in); System.out.println (sinalizador); } catch (filenotfoundException e) {e.printStackTrace (); }} /** * Descrição: Faça o download do arquivo do servidor FTP * * @versão1.0 * @param url * ftp servidor hostName * @param porta * porta ftp Porta do servidor * @param userName * ftp Login conta * @param senha * ftp Login senha * @param REMOTEPETEPATH * TOM REMOTIN no ftp servidor * Após o download * @return */ public static boolean DownFile (URL da String, porta int, nome de usuário da String, senha da String, String Remotepath, String filename, String Localath) {resultado booleano = false; tente {int Responder; ftpClient.SetControlEncoding (codificação); / * * Para fazer upload e baixar arquivos chineses, alguns lugares recomendam o uso das duas frases a seguir em vez de * new String (remotepath.getbytes (codificação), "ISO-8859-1") transcodificando. * Após o teste, ele não pode ser passado. */// ftpclientConfig conf = new ftpClientConfig (ftpclientConfig.syst_nt); // conf.setsserverlanguageCode ("zh"); ftpClient.Connect (URL, porta); // Se a porta padrão for usada, você poderá se conectar diretamente ao servidor FTP por ftpclient.login (nome de usuário, senha); // login // Defina o tipo de transferência de arquivo para binário ftpclient.setFileType (ftpclient.binary_file_type); // Obtenha o código de resposta do login FTP Responder = ftpClient.getReplyCode (); // Verifique se o login é bem -sucedido se (! FtPreply.ispositivecicling (resposta)) {ftpclient.disconnect (); System.err.println ("FTP Server Recused Connection."); resultado de retorno; } // Transfira para o diretório do servidor FTP para o diretório especificado ftpclient.ChangeWorkingDirectory (new String (remotepath.getbytes (codificação), "ISO-8859-1"); // Obtenha a lista de arquivos ftpfile [] fs = ftpClient.listfiles (); para (ftpfile ff: fs) {if (ff.getName (). Equals (FileName)) {arquivo localfile = new File (localPath + "/" + ff.getName ()); OutputStream is = new FileOutputStream (LocalFile); ftpClient.retrievefile (ff.getName (), IS); is.close (); }} ftpClient.logout (); resultado = true; } catch (ioexception e) {e.printStackTrace (); } finalmente {if (ftpClient.isconnected ()) {try {ftpclient.disconnect (); } catch (ioexception iOe) {}}} Retornar resultado; }/** * Faça o download do arquivo no servidor FTP para o local * */public void testdownfile () {try {bandeira booleana = DownFile ("10.0.0.102", 21, "admin", "123456", "/", "ip.txt", "e:/"); System.out.println (sinalizador); } catch (Exceção e) {e.printStackTrace (); }} public static void main (string [] args) {ftpapche fa = new ftpapche (); fa.testdownfile (); fa.testuploadfromdisk (); }}2. Carregue e faça o download das pastas FTP (observe que toda a pasta é a pasta inteira)
pacote ftp; importar java.io.bufferedInputStream; importar java.io.bufferedOutputStream; importar java.io.file; importar java.io.fileInputStream; importpututSeal.io.fileNotFoundException; import java.io.fileoutOnTream; import.io.io.io.io.io.iotfoundException; importação java.io.fileOutReTream; org.apache.commons.net.ftp.ftpclient; importar org.apache.commons.net.ftp.ftpclientConfig; importar org.apache.commons.net.ftp.ftpfile; import org.apache.commons.net.ftPOG.TrepTen; importpFile; FtpClient ftpClient; tira de corda privada; private int intport; Usuário de String Private; senha de sequência privada; Logger estático privado = logger.getLogger (ftptest_04.class.getName ()); / * * * Construtor ftp */ public ftptest_04 (string tira, int intport, string user, string senha) {this.strip = strip; this.intport = intport; this.User = usuário; this.password = senha; this.ftpClient = new ftpClient (); } / *** @return Determine se o login é bem -sucedido** / public boolean ftplogin () {boolean islogin = false; FtpClientConfig ftpClientConfig = new FTPClientConfig (); ftpClientConfig.SetServertimeZoneId (timezone.getDefault (). getId ()); this.ftpclient.setControlencoding ("GBK"); this.ftpclient.configure (ftpclientConfig); tente {if (this.intport> 0) {this.ftpclient.connect (this.strip, this.intport); } else {this.ftpclient.connect (this.strip); } // conexão do servidor FTP Resposta int Responder = this.ftpClient.getReplyCode (); if (! ftpreply.ispositiveciction (resposta)) {this.ftpclient.disconnect (); Logger.error ("Faça login no serviço FTP falhou!"); retornar islogin; } this.ftpClient.login (this.User, this.password); // defina o protocolo de transmissão this.ftpclient.enterlocalpassivEmode (); this.ftpclient.setFileType (ftpClient.binary_file_type); Logger.info ("Parabéns" + this.User + "logou com sucesso no servidor FTP"); islogin = true; } catch (Exceção e) {e.printStackTrace (); Logger.error (this.User + "Login no serviço FTP falhou!" + E.GetMessage ()); } this.ftpclient.setBuffersize (1024 * 2); this.ftpClient.SetDatatimeout (30 * 1000); retornar islogin; }/ *** @Exit Link do servidor Fechar**/ public void ftPLogout () {if (null! = This.ftpclient && this.ftpclient.isconnected ()) {try {boolean reuslt = this.ftpclient.logout (); // extp ftp server se (reUSLT) {Log) {Log) {Log. }} catch (ioexception e) {e.printStackTrace (); Logger.warn ("Exceção de sair do servidor FTP!" + E.GetMessage ()); } finalmente {tente {this.ftpclient.disconnect (); // feche a conexão com o servidor ftp} catch (ioexception e) {e.printStackTrace (); Logger.warn ("Exceção de fechar a conexão do servidor FTP!"); }}}}}/**** Carregue o arquivo ftp* @param localFile Local File* @param ROMOTUPLOADEPATH Path Server Path- deve terminar com/**/public boolean uploadFile (arquivo LocalFile, String ROMOTUPLOADEPATH) {BufferInputStream Instremeam = Null; sucesso booleano = false; tente {this.ftpclient.ChangeWorkingDirectory (ROMOTUPLOADEPATH); // Alterar o caminho de trabalho Instruam = new BufferingInputStream (new FileInputStream (LocalFile)); Logger.info (localfile.getName () + "Start Upload ..."); sucesso = this.ftpclient.storefile (localfile.getName (), Instream); if (success == true) {logger.info (localfile.getName () + "carregado com sucesso"); sucesso de sucesso; }} catch (filenotfoundException e) {e.printStackTrace (); Logger.error (LocalFile + "não encontrado"); } catch (ioexception e) {e.printStackTrace (); } finalmente {if (Instream! = null) {tente {Instream.close (); } catch (ioexception e) {e.printStackTrace (); }}} retornar sucesso; } / **** Baixe o arquivo* @param RemoteFileName Nome do arquivo a ser baixado* @Param LocalDires Download no caminho local* @param remoterownload spath o caminho em que o RemoteFilename está localizado** / public boolean download (string RemoteFilename, string localDires, stringtownLoOwnTPath) { BufferOutputStream supertam = null; sucesso booleano = false; tente {this.ftpclient.ChangeWorkingDirectory (RemotetewnLownloadPath); Outream = new BufferoudOutputStream (new FileOutputStream (strFilePath)); Logger.info (RemoteFilename + "Iniciar Download ..."); sucesso = this.ftpClient.retrievefile (remotefileName, superam); if (success == true) {logger.info (remotefileName + "baixado com sucesso para" + strfilepath); sucesso de sucesso; }} catch (Exceção e) {e.printStackTrace (); Logger.error (RemoteFilename + "Download Faily"); } finalmente {if (null! = sujeira) {tente {Outream.flush (); superam.close (); } catch (ioexception e) {e.printStackTrace (); }}} if (succcess == false) {Logger.error (RemoteFileName + "Download FAILED !!!"); } retornar sucesso; }/**** Pasta @upload* @param localDirectory* Pasta local* @param remotetectoryPath* O caminho do servidor FTP termina com o diretório "/"**/public boolean uploadDirectory (string localDirectory, stringirtectorypath) {arquivo src = new (new (localDirtorCy); tente {remotetectoryPath = RemotedirectoryPath + src.getName () + "/"; boolean makedirflag = this.ftpclient.Makedirectory (RemotedirectoryPath); System.out.println ("LocalDirectory:" + LocalDirectory); System.out.println ("RemoteteCorToryPath:" + RemoteteCorToryPath); System.out.println ("src.getName ():" + src.getName ()); System.out.println ("RemoteteCorToryPath:" + RemoteteCorToryPath); System.out.println ("makerflag:" + makerflag); // ftpClient.ListDirectories (); } catch (ioexception e) {e.printStackTrace (); Logger.Info (RemoteteCtoryPath + "Criação do diretório falhou"); } Arquivo [] allFile = src.listfiles (); para (int currentFile = 0; currentFile <allfile.length; currentFile ++) {if (! AllFile [currentFile] .isDirectory ()) {string srcname = allFile [currentFile] .getPath (). tostring (); uploadfile (novo arquivo (srcname), remotetectoryPath); }} para (int currentFile = 0; currentFile <allfile.length; currentFile ++) {if (allFile [currentFile] .isDirectory ()) {// uploaddirectory recursivo (allFile [currentFile] .getPath (). }} retornar true; } / **** @Download Pasta* @param localDirectoryPath Endereço local* @param RemoteteCory Remote Polder** / public boolean DownloadDirectory (String LocalDirectoryPath, String RemotecTory) {Try {String filename = new File (RemoteCtory) .getName (); LocalDirectoryPath = LocalDirectoryPath + FileName + "//"; novo arquivo (localDirectoryPath) .mkdirs (); Ftpfile [] allFile = this.ftpclient.listfiles (remotectory); para (int currentFile = 0; CurrentFile <allFile.Length; currentFile ++) {if (! AllFile [currentFile] .isDirectory ()) {DownloadFile (AllFile [currentFile] .getName (), LocalDirectoryPhath, Remotectory); }} para (int currentFile = 0; currentFile <allfile.length; currentFile ++) {if (allFile [currentFile] .isDirectory ()) {string stremotectoryPath = Remotedirectory+ "/"+ AllFile [currentFile] .getName (); DownloadDirectory (LocalDirectoryPath, stremotedirectoryPath); }}} catch (ioexception e) {e.printStackTrace (); logger.info ("Falha na pasta de download"); retornar falso; } retornar true; } // Defina e obtenha funções FTPClient getftpClient () {return ftpClient; } public void SetftpClient (ftpClient ftpClient) {this.ftpClient = ftpClient; } public static void main (string [] args) lança ioexception {ftptest_04 ftp = new ftptest_04 ("10.0.0.102", 21, "admin", "123456"); ftp.ftplogin (); System.out.println ("1"); // Faça o upload da pasta booleana uploadflag = ftp.uploaddirectory ("d: // test02", "/"); // Se for admin/, todos os arquivos serão passados. Se for justo/, será transmitido no sistema de pastas.out.println ("UPLOPLAG:" + uPLOPLAG); // Baixar pasta ftp.downloadDirectory ("d: // tm", "/"); ftp.ftPlogout (); }}O exposto acima é todo o conteúdo deste artigo. Espero que o conteúdo deste artigo seja de ajuda para estudar ou trabalhar de todos. Eu também espero apoiar mais wulin.com!