Um projeto que eu costumava fazer no passado, carregando arquivos para o servidor FTP e agora eu o reviso. É relativamente simples e você pode entender de uma só vez.
Ambiente: Primeiro, instale o servidor FTP primeiro. Eu o configurei localmente no Win8 com o IIS. Você pode encontrar o documento de instalação no Baidu.
1. Crie um arquivo de configuração FTP no diretório do seu projeto, o diretório é como mostrado abaixo
01 ftpconfig.properties:
ftpip = 10.73.222.29
ftpport = 21
ftpUser = WP
ftppwd = 04143114wp
ftpremotepath = d: // compartilhe
02 Classe que lê o conteúdo específico em ftpconfig.properties:
pacote com.java.core.util; importar java.io.ioexception; importar java.io.inputStream; importar java.util.properties;/*** @author wangpei* @version criado: 6 de maio de 2017 em 9:42:40pr lê o arquivo de configuração do arquivo ftp* Propriedades de propriedades privadas; public readftpProperties () {is = this.getClass (). getResourceasStream ("/ftpconfig.properties"); // Leia o arquivo de configuração nas propriedades do fluxo de entrada = novas propriedades (); tente {Properties.load (IS); } catch (ioexception e) {System.out.println ("O arquivo de configuração não existe .."); E.PrintStackTrace (); } finalmente {if (null! = is) {try {is.close (); } catch (ioexception e) {System.out.println ("Falha em fluxo fechado .."); E.PrintStackTrace (); }}}} public string getip () {// obtenha o endereço IP do servidor FTP Propriedades de retorno.getProperty ("ftpip"); } public string getport () {// obtenha a porta das propriedades de retorno do servidor FTP.getProperty ("ftpport"); } public String getUser () {// Obtenha o nome de usuário FTP Login Return Properties.getProperty ("ftpuser"); } public string getpwd () {// Obtenha a senha de login das propriedades de retorno do servidor FTP.getProperty ("ftppwd"); } public String getRemotepath () {// Obtenha o diretório em que os arquivos são armazenados no servidor FTP são devolvidos Propriedades.getProperty ("ftpremotepath"); }}03 A classe de interface para upload de arquivo e download
pacote com.java.web.service; importar java.io.inputStream; importar org.apache.commons.net.ftp.ftpclient; importar com.java.core.util.readftpproperties;/** * @author wangpei * @VerSion Created: maio de 6, 2017, 2017; camada */interface pública ftpService {/ * * efetue login no ftp */public boolean loginftp (cliente ftpClient, readftproperties rfp); /* * Log out of ftp */ public boolean logout(FTPClient client);// /* * Upload the file to remotePath, whose name on ftp is inputStream */ public boolean uploadFile(FTPClient client, String remotePath, String fileNewName, InputStream inputStream, ReadFtpProperties rfp); / * * Faça o download do nome do arquivo do arquivo do diretório remotepath */ public inputStream DownFileByBOFTP (cliente ftpClient, string remotepath, string filename); /** Exclua o arquivo com o nome do diretório em ftp*/ public boolean delfile (cliente ftpclient, string pathname);}04 A classe de implementação da interface para upload e download de arquivos
package com.java.web.service.serviceImpl;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.SocketException;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.ftpClient; importar org.apache.commons.net.ftp.ftpfile; importar com.java.core.util.readftproperties; importe.java.web.service.ftpsice; Classe Descrição*/public class FTPServiceImpl implementa ftpService {public boolean Loginftp (cliente ftpClient, readftproperties rfp) {string ftpip = rfp.getip (); String ftpport = rfp.getport (); String ftpUser = rfp.getUser (); String ftppwd = rfp.getpwd (); // string fgtpremotepath = rfp.getRemotepath (); booleano b = false; tente {client.connect (ftpip, inteiro.parseint (ftpport)); } catch (numberFormatexception e) {System.out.println ("Não é possível conectar -se ao FTP"); retornar falso; } catch (SockeTexception e) {System.out.println ("Não é possível conectar -se ao FTP"); retornar falso; } catch (ioexception e) {System.out.println ("Não é possível conectar -se ao FTP"); retornar falso; } catch (ioexception e) {System.out.println ("Não é possível conectar -se ao FTP"); retornar falso; } client.setControlencoding ("UFT-8"); tente {b = client.login (ftpuser, ftppwd); } catch (ioexception e) {System.out.println ("Erro de login ftp"); logout (cliente); // logout/desconectar o link do servidor FTP retornar false; } retornar b; } public boolean logout (cliente ftpClient) {boolean b = false; tente {b = client.logout (); // logout client.disconnect (); // desconect} catch (ioexception e) {return false; } retornar b; } public boolean uploadfile (cliente ftpClient, string remotepath, string fileNewName, inputStream inputStream, readftproperties rfp) {boolean b = false; tente {client.setFileType (ftpClient.binary_file_type); client.EnterlocalPassivEMode (); if (remotepath! = null &&! "". Equals (remotepath.trim ())) {string [] caminhos = remotepath.split ("/"); para (String OnePath: Paths) {if (OnePath == NULL || "" .Equals (OnePath.Trim ())) {Continue; } OnePath = new String (OnePath.getBytes ("UTF-8"), "ISO-8859-1"); System.out.println ("OnePath =" + OnePath); if (! client.ChangeWorkingDirectory (OnePath)) {client.Makedirectory (OnePath); // Crie um FTP Server Directory Client.ChangeWorkingDirectory (OnePath); // Altere o diretório do servidor FTP} else {System.out.println ("Arquivo único caminho"); }}} b = client.storefile (new String (fileNewName.getBytes ("utf-8"), "ISO-8859-1"), inputStream); } catch (não suportadoEncodingException e) {return false; } catch (ioexception e) {return false; } retornar b; } public inputStream DownFileByftp (ftpClient ftpClient, string remotepath, string filename) {ftpfile [] fs; InputStream é = nulo; tente {// defina modo passivo ftpclient.enterlocalpassivEmode (); // set ftpclient.setFileType (ftp.binary_file_type); // Definir formato de edição ftpclient.setControlencoding ("UTF-8"); remotepath = remotepath.substring (0, remotepath.lastIndexOf (nome do arquivo)); fs = ftpclient.listfiles (remotepath); // diretório de destino recursivo para (ftpfile ff: fs) {if (ff.getName (). Equals (filename)) {// encontre o arquivo de destino é = ftpclient.retieveFilEstReren (new) (Remotepath) "ISO-8859-1")); quebrar; }}} catch (ioexception e) {e.printStackTrace (); } retornar é; } public boolean delfile (ftpClient ftpClient, string pathname) {boolean b = false; tente {b = ftpClient.DeleteFile (PathName); retornar b; } catch (Exceção e) {return false; } finalmente {logout (ftpClient); // exit/desconecte o link do servidor ftp}}}O código é fácil de entender, deve ser entendido lendo -o uma vez. Não vou analisá -lo especificamente aqui, analisar principalmente os comentários no código.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.