Apache FTP ist ein weit verbreitetes FTP -Upload -Client -Tool. Es ist einfach zu bedienen, hat einen einfachen Code und eine klare Struktur. Es ist eine Priorität für die FTP -Datei -Client -Verwaltungssoftware. Zu den FTP -Vorgängen gehören: FTP -Datei -Upload (Breakpoint Continuous Getriebe), FTP -Datei -Download, FTP -Datei -Umbenennung und FTP -Datei -Löschung. Diese Operationen haben die FTP -Anwendungsverwaltungsmethode vollständig demonstriert. Daher habe ich diese Methode immer verwendet, um die Verwaltung von FTP -Dateiservern zu implementieren. mit FTP -Toolcode angehängt.
1. FTP -Dateibetriebsstatus Aufzählungsklasse
Paket com.scengine.wtms.utils.ftp; public enum FTPStatus { File_Exits(0), Create_Directory_Success(1), Create_Directory_Fail(2), Upload_From_Break_Success(3), Upload_From_Break_Faild(4), Download_From_Break_Success(5), Download_From_Break_Faild(6), Upload_New_file_success (7), Upload_New_File_Failed (8), Delete_Remote_Success (9), Delete_remote_faild (10), remote_bigger_local (11), remote_smaller_local (12), nicht_exist_file (13), remote_rename_success (14), remote_rename_faild (15), file_not_unique (16); privater Int -Status; public int getStatus () {Rückgabestatus; } public void setStatus (int Status) {this.status = Status; } FtpStatus (int Status) {this.status = Status; }} 2. Toolcode für FTP -Dateioperationstools
Paket com.scengine.wtms.utils.ftp; Import Java.io.file; import Java.io.FileInputStream; importieren java.io.fileoutputStream; importieren java.io.ioException; importieren java.io.inputstream; importieren java.io.outputstream; importieren java.io.outputstream; Import Java.io.printwriter; importieren javax.servlet.http.httpServletResponse; import org.apache.commons.net.printcommandListener; import org.apache.commons.net.ftp.ftp; import org.apache.commons.net.ftp.ftpclient; import org.apache.commons.net.ftp.ftpfile; import org.apache.commons.net.ftp.ftpreply; com.scengine.wtms.utils.log; public class ftputils {private ftpclient ftpclient = new ftpclient (); / *** Einstellungen für Objektkonstruktionen geben die im Prozess verwendeten Befehle an die Konsole*/ public ftputils () {this.ftpclient.addProtocolcommandListener (neuer PrintCommandListener (New PrinzipWriter (System.Out))) aus. } / ** * * Wird verwendet, um eine Verbindung zum FTP -Server in Java -Programmierung herzustellen ftpclient.connect (Hostname, Port); if (ftpreply.ispositiveCompletion (ftpclient.getReplyCode ())) {if (ftpclient.login (Benutzername, Passwort)) {return true; }} disconnect (); false zurückgeben; } / ** * Remote ftp -Datei löschen * * @param remote * Remote -Dateipfad * @return * @throws ioException * / public ftpStatus delete (String remote) löscht ioException {ftpclient.enterLocalPassivemode (); ftpclient.setFiletype (ftp.Binary_file_type); FtpStatus result = null; Ftpfile [] files = ftpclient.listfiles (remote); if (files.length == 1) {boolean status = ftpclient.deleteFile (Remote); Ergebnis = Status? Ftpstatus.delete_remote_success: ftpstatus.delete_remote_faild; } else {result = ftpstatus.not_exist_file; } Log.getLogger (this.getClass ()). Info ("FTP Server -Datei Löschung ID:"+Ergebnis); Rückgabeergebnis; } / ** * Die Remote-FTP-Datei umbenennen * * @param name * neuer Remote-Dateiname (Path-must, der unter demselben Pfad garantiert ist) * * @param remote * Remote-Dateipfad * * @return, ob es erfolgreich ist. ftpclient.setFiletype (ftp.Binary_file_type); FtpStatus result = null; Ftpfile [] files = ftpclient.listfiles (remote); if (files.length == 1) {boolean status = ftpclient.rename (remote, name); Ergebnis = Status? Ftpstatus.remote_rename_success: ftpstatus.remote_rename_faild; } else {result = ftpstatus.not_exist_file; } Log.getLogger (this.getClass ()). Info ("FTP Server -Dateiname -Aktualisierungskennung:"+Ergebnis); Rückgabeergebnis; } / ** * * Datei vom FTP -Server herunterladen * * @param Dateiname * Dateiname herunterladen (einschließlich Suffix -Name) * * @param remote * Remote -Dateipfad * * @param Local * Local File Path * * @Return, ob es erfolgreich ist. Popup-Datei speichern Pfadauswahlfenster Antwort.SetContentType ("Anwendung/Oktett-Stream"); Antwort.SetContentType ("Anwendung/Oktett-Stream; CharSet = UTF-8"); response.setheader ("Inhaltsdisposition", "Anhang; Dateiname =" +Dateiname); ftpclient.enterLocalPassivemode (); ftpclient.setFiletype (ftp.Binary_file_type); Ftpstatus Ergebnis; OutputStream out = response.getOutputStream (); boolescher Status = ftpclient.RevievEFile (Remote, out); result = status? Log.getLogger (this.getClass ()). Info ("FTP Server -Datei Download -Kennung:"+Ergebnis); out.close (); Rückgabeergebnis; } / ** * Datei vom FTP -Server herunterladen * * @param remote * Remote -Dateipfad * * @param local * Local Dateipfad * * @return, ob erfolgreich * * @throw ioException * / @SuppressWarnings ("Ressourcen") public ftpstatus download (String remote, String lokal) Wurs ioException {{ftpcl. ftpclient.setFiletype (ftp.Binary_file_type); Ftpstatus Ergebnis; Datei f = neue Datei (lokal); Ftpfile [] files = ftpclient.listfiles (remote); if (Dateien.length! = 1) {log.getLogger (this.getClass ()). Info ("Remote -Datei ist nicht eindeutig"); return ftpStatus.file_not_unique; } long lremoteSize = Dateien [0] .GetSize (); if (f.Exists ()) {outputStream out = new FileOutputStream (f, true); Log.getLogger (this.getClass ()). Info ("Lokale Dateigröße ist:" + f.length ()); if (f.length ()> = lremotesize) {log.getLogger (this.getClass ()). Info ("Die lokale Dateigröße ist größer als die Remotedateigröße, download abgebrochen"); return ftpstatus.remote_smaller_local; } ftpclient.setRestartOffset (f.length ()); boolescher Status = ftpclient.RevievEFile (Remote, out); result = status? out.close (); } else {outputStream out = new FileOutputStream (f); boolescher Status = ftpclient.RevievEFile (Remote, out); result = status? out.close (); } Rückgabeergebnis; }/** * Datei auf dem FTP-Server hochladen, unterstützen Sie die kontinuierliche Übertragung von Breakpoint. Ergebnis * * @throws ioException */ @SuppressWarnings ("Ressource") public ftpStatus upload (String Local, String Remote) löst ioException {// PISPIVEMODE fest, um ftpclient.enterLocalpassivemode () zu übertragen; // auf übertraget ftpclient.setFileType (ftp.bary_file_type); Ftpstatus Ergebnis; // Verarbeitung der Remote -Verzeichnisse String remoteFileName = remote; if (remote.contains ("/")) {remoteFileName = remote.substring (remote.lastIndexof ("/") + 1); String Directory = remote.substring (0, remote.lastIndexof ("/") + 1); if (! Directory.EqualSignoreCase ("/") &&! int End = 0; if (verzeichnis.startswith ("/"))) {start = 1; } else {start = 0; } end = directory.indexof ("/", starten); while (true) {string subdirectory = remote.substring (start, ende); if (! ftpclient.ChangeWorkingDirectory (Subdirectory)) {if (ftpclient.makedirectory (subdirectory)) {ftpclient.ChangeWorkingDirectory (Subdirectory); } else {log.getLogger (this.getClass ()). Info ("Verzeichnis fehlgeschlagen"); return ftpstatus.create_directory_fail; }} start = end + 1; end = directory.indexof ("/", start); // Überprüfen Sie, ob alle Verzeichnisse erstellt wurden, wenn (end <= start) {break; }}}}} // prüfen, ob es eine Datei remote ftpfile [] files = ftpclient.listfiles (remoteFileName) gibt; if (files.length == 1) {long remotesize = files [0] .GetSize (); Datei f = neue Datei (lokal); long localSize = f.length (); if (remoteSize == localSize) {return ftpstatus.file_exits; } else if (remotesize> localSize) {return ftpstatus.remote_bigger_local; } // Versuchen Sie, den Zeiger in der Datei zu verschieben, um die Unterbrechung des Breakpoint InputStream zu erkennen. if (is.skip (remotesize) == remotesize) {ftpclient.setRestartOffset (remoteSize); if (ftpclient.storefile (remote, is)) {return ftpstatus.upload_from_break_success; }} // Wenn der Haltepunkt erfolglos weitergibt, löschen Sie die Datei auf dem Server und laden Sie sie erneut hoch, wenn (! Ftpclient.deleteFile (remoteFileName)) {return ftpstatus.delete_remote_faild; } is = new FileInputStream (f); if (ftpclient.storefile (remote, is)) {result = ftpstatus.upload_new_file_success; } else {result = ftpstatus.upload_new_file_failed; } is.close (); } else {InputStream ist = neuer FileInputStream (lokal); if (ftpclient.storefile (remoteFileName, IS)) {result = ftpstatus.upload_new_file_success; } else {result = ftpstatus.upload_new_file_failed; } is.close (); } Rückgabeergebnis; } / ** * * tricnect vom Remote -Server * * @throws ioException * / public void disconnect () löscht ioException {if (ftpclient.isconnected ()) {ftpclient.disconnect (); }} public static void main (String [] args) {ftputils myftp = new ftputils (); try {myftp.connect ("192.168.1.200", 21, "Duser", "htpDuserxp32"); Log.getLogger (ftputils.class) .info (myftp.upload ("c: //users//administrator//desktop//swing.drawer.jar", "/jars/swing.drawer.jar")); myftp.disconnect (); } catch (ioException e) {log.getLogger (ftputils.class) .Info ("FTP Upload -Dateiausnahme:" + e.getMessage ()); }}}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.