Apache FTP является широко используемым клиентским инструментом для загрузки FTP. Его легко работать, имеет простой код и четкую структуру. Это приоритет для программного обеспечения для управления клиентами FTP. Операции FTP включают в себя: загрузка файла FTP (непрерывная передача Breakpoint), загрузка файла FTP, переименование файла FTP и удаление файла FTP. Эти операции полностью продемонстрировали метод управления приложениями FTP. Поэтому я всегда использовал этот метод для реализации управления файлами FTP; Прикреплено с кодом инструмента FTP.
1. Файл Файл.
пакет 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_faild (4), download_from_success (5). 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), not_exist_file (13), remote_rename_success (14), remote_rename_faild (15), file_not_unique (16); частный статус Int; public int getStatus () {Статус возврата; } public void setStatus (int status) {this.status = status; } FtpStatus (int status) {this.status = status; }} 2. Код инструмента работы файла FTP
пакет com.scengine.wtms.utils.ftp; Импорт java.io.file; импортировать java.io.fileinputstream; Импорт java.io.fileOutputStream; импортировать java.io.ioexception; импортировать java.io.inputstream; импортировать java.io.outputstream; импортировать java.io.outputstream; Импорт java.io.printwriter; Импорт javax.servlet.http.httpservletresponse; Import org.apache.commons.net.printcommandlistener; Импорт org.apache.commons.net.ftp.ftp; Import org.apache.commons.net.ftp.ftpclient; Import org.apache.commons.net.ftp.ftpfile; Импорт org.apache.commons.net.ftp.ftpreply; Import com.scengine.wtms.utils.log; public class ftputils {private ftpclient ftpclient = new ftpclient (); / *** Настройки конструкции объекта вывод команды, используемых в процессе, в консоли*/ public ftputils () {this.ftpclient.addprotocolcommandlister (new PrintCommandListener (New PrintWriter (System.out))); } / ** * * * Используется для подключения к серверу FTP в Java Programming * * * @param hostname * hostname * * @param port * port * * @param username * username * * @param password * password * @return, независимо ли подключение * * @Throws ioExcept ftpclient.connect (имя хоста, порт); if (ftpreply.ispositivecoplusion (ftpclient.getReplyCode ())) {if (ftpclient.login (username, password)) {return true; }} dinconcect (); вернуть ложь; } / ** * Удалить удаленный ftp -файл * * @param remote * remote file path * @return * @throws ioexception * / public ftpstatus delete (string remote) бросает 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); Результат = статус? Ftpstatus.delete_remote_success: ftpstatus.delete_remote_faild; } else {result = ftpstatus.not_exist_file; } Log.getLogger (this.getClass ()). Info ("Идентификатор удаления файлов FTP -сервера:"+result); результат возврата; } / ** * Переименовать файл удаленного FTP * * @param Имя * Новое имя удаленного файла (PATH-MUST GUINADED будет находиться под одним и тем же путем) * * @param remote * Путь удаленного файла * * @return, будет ли он успешным * * @throws ioexception * / public ftpstatus rename (String Remote) throws IoException uexception uexception {ftpclient. ftpclient.setFileType (ftp.binary_file_type); Ftpstatus result = null; Ftpfile [] files = ftpclient.listfiles (remote); if (files.length == 1) {boolean status = ftpclient.rename (remote, name); Результат = статус? Ftpstatus.remote_rename_success: ftpstatus.remote_rename_faild; } else {result = ftpstatus.not_exist_file; } Log.getLogger (this.getClass ()). Info ("Идентификатор обновления файла FTP -сервера:"+result); результат возврата; } / ** * * * Загрузить файл с FTP -сервера * * @param fileName * Имя файла загрузки (включая имя суффикса) * * @param remote * remote file path * * @param local * local file path * * @return. Впрыскивание файла сохранения Response.setContentType ("Приложение/Octet-Stream; charset = utf-8"); response.setheader ("Содержимое-распада", "Приложение; filename =" +filename); ftpclient.enterlocalpassivemode (); ftpclient.setFileType (ftp.binary_file_type); Ftpstatus результат; OutputStream out = response.getOutputStream (); логический статус = ftpclient.retrievefile (удаленное, out); result = status? ftpStatus.download_from_break_success: ftpstatus.download_from_break_faild; Log.getLogger (this.getClass ()). Info ("FTP -серверный идентификатор загрузки:"+result); out.close (); результат возврата; } / ** * Загрузить файл с FTP -сервера * * @param remote * remote file path * * @param local * local file path * * @return. ftpclient.setFileType (ftp.binary_file_type); Ftpstatus результат; Файл f = новый файл (локальный); Ftpfile [] files = ftpclient.listfiles (remote); if (files.length! = 1) {log.getLogger (this.getClass ()). info ("Удаленный файл не уникален"); вернуть ftpstatus.file_not_unique; } long lReMotesize = files [0] .getSize (); if (f.exists ()) {outputStream out = new FileOutputStream (f, true); Log.getLogger (this.getClass ()). Info ("Локальный размер файла:" + f.length ()); if (f.length ()> = lReMotesize) {log.getLogger (this.getClass ()). Info («Размер локального файла больше, чем убитый размер файла, загрузка прерванного»); вернуть ftpstatus.remote_smaller_local; } ftpclient.setRestarToffset (f.length ()); логический статус = ftpclient.retrievefile (удаленное, out); result = status? ftpStatus.download_from_break_success: ftpstatus.download_from_break_faild; out.close (); } else {outputStream out = new FileOutputStream (f); логический статус = ftpclient.retrievefile (удаленное, out); result = status? ftpStatus.download_from_break_success: ftpstatus.download_from_break_faild; out.close (); } return Result; }/** * Загрузка файла на FTP-сервер, поддержка непрерывная передача * * * @param локальный * Имя локального файла, абсолютный путь * * @param remote * remote pail Path, используйте/home/directory1/subdirectory/file. Результат * * @Throws IOException */ @SuppressWarnings ("resource") public ftpStatus upload (String local, String remote) бросает ioException {// set passivemode для передачи ftpclient.enterlocalpassivemode (); // установить на передачу ftpclient.setfiletype (ftp.binary_file_type); Ftpstatus результат; // Обработка удаленных каталогов string remotefilename = remote; if (remote.contains ("/")) {remotefilename = remote.substring (remote.lastindexof ("/") + 1); String Directory = remote.substring (0, remote.lastIndexof ("/") + 1); if (! Directory.equalsIgnoreCase ("/") &&! ftpclient.changeWorkingDirectory (Directory)) {// Если удаленный каталог не существует, повторно создайте удаленный серверный каталог int start = 0; int end = 0; if (directory.startswith ("/"))) {start = 1; } else {start = 0; } end = directory.indexof ("/", start); while (true) {string sub -recrectory = remote.substring (start, end); if (! ftpclient.changeworkingDirectory (sub -suberectory)) {if (ftpclient.makedirectory (sub -suberectory)) {ftpClient.ChangeWorkingDirectory (sub -receRectory); } else {log.getLogger (this.getClass ()). info ("create Differe"); вернуть ftpstatus.create_directory_fail; }} start = end + 1; end = directory.indexof ("/", start); // Проверьте, были ли все каталоги созданы, если (end <= start) {break; }}}}} // Проверьте, существует ли файл удаленной ftpfile [] files = ftpclient.listfiles (remotefilename); if (files.length == 1) {long RemoteSize = files [0] .getSize (); Файл f = новый файл (локальный); long localsize = f.length (); if (remoteSize == LocalSize) {return ftpStatus.file_exits; } else if (remoteSize> localize) {return ftpstatus.remote_bigger_local; } // Попробуйте переместить указатель в файле, чтобы реализовать прерывание точки BreakPoint InputStream IS = new FileInputStream (f); if (is.skip (remoteSize) == remoteSize) {ftpClient.SetRestArtOffSet (remoteSize); if (ftpclient.storefile (remote, is)) {return ftpstatus.upload_from_break_success; }} // Если точка останова продолжает проходить безуспешно, удалите файл на сервере и загрузите его снова, если (! 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 IS = new FileInputStream (Local); if (ftpclient.storefile (remotefilename, is)) {result = ftpstatus.upload_new_file_success; } else {result = ftpstatus.upload_new_file_failed; } is.close (); } return Result; } / ** * * * Отсоедините от удаленного сервера * * @Throws ioException * / public void disconnect () бросает 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 ulload file Exception:" + e.getMessage ()); }}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.