В этой статье в основном представлено, как использовать инструмент FTP, предоставленный Apache Toolset Commons-Net для загрузки и загрузки файлов на FTP-сервер.
1. Подготовка
Нужно ссылаться на пакет Commons-Net-3.5.jar.
Импорт с использованием Maven:
<Depective> <groupid> commons-net </GroupId> <artifactid> commons-net </artifactid> <serse> 3.5 </version> </depervice>
Скачать руководство:
//www.vevb.com/softs/550085.html
2. Подключитесь к FTP -серверу
/** * Подключитесь к FTP -серверу * @Throws IOException */public Static Final String anonymous_user = "anonymous"; private ftpclient connect () {ftpclient client = new ftpclient (); try {// connect ftp serverclient.connect (this.host, this.port); // if (this.user == null || "". equals (this.user)) {// login in client.login (anonymous_user, anonymous_user);} else {client.login (this.user, this.password);} // set file format clim int response = client.getReplyCode (); if (! ftpReply.ispositivecomplotion (reply)) {client.disconnect (); return null;} // переключение рабочего каталога изменение workworkDirectory (client.out.println ("=== Connect natp:"+host+":"+port); Client;}/*** Переключить рабочий каталог. Когда удаленного каталога не существует, создайте каталог * @param client * @throws ioexception */private void woid wordhingdirectory (ftpclient client) бросает ioexception {if (this.ftppath! = Null &&! client.changeworkingDirectory (this.ftppath); if (! ok) {// ftppath не существует, создайте каталог вручную stringtokenizer token = new StringTokenizer (this.ftppath, "////"); while (token.hasmoretokens ()) {String path = token.nexttoken (); client.madkedirectory (path); client.changeWorkingDirectory (path);}}}}/** * Отключить соединение ftp * @param ftpclient * @throws ioexception */public void close ftpclient) tohing ioexception {ifply ully j (ftpclient & in! ftpclient.isconnected ()) {ftpclient.logout (); ftpclient.disconnect ();} system.out.println ("!!! Disnonnectftp Connection:"+host+":"+port);} Хост: IP -адрес FTP -сервера IP -адрес
Порт: порт FTP -сервера
Пользователь: пользователь входа в систему
Пароль: Когда пароль для входа пуст, используйте анонимного пользователя для входа в систему.
FTPPATH: путь FTP, автоматически созданный, когда пути FTP не существует. Если это многослойная структура каталогов, необходимо итеративно создавать каталог.
3. Загрузить файлы
/*** upload file* @param targetname upload to ftp -имя файла* @param localfile local file path* @return*/public boolean upload (string targetname, string localfile) {// connect ftp serverftpclient ftpclient = connect (); if (ftpclient == null) {System.out.print Сервер ["+host+": "+port+"] не удастся! "); return false;} файл файла = новый файл (localfile); // Установить имя файла после загрузки if (targetname == null ||" ". equals (targetName)) targetName = file.getName (); fileInputStream fis = null; null; null; long nows = system.currrenttimemiltis () fiS = null; null; FileInputStream (file); System.out.println (">>> FART HOUDLOAD FILE:"+file.getName ()); Boolean OK = ftpClient.StoreFile (TargetName, fis); if (ok) {// Загрузить Long Times = System.CurrentTimiLLIS () - теперь; %s, время загрузки: %d секунд ", formatize (file.length ()), times/1000));} else // upload fail System.out.println (string.format (" >>> Неиспособность загрузки: size: %s ", formatisize (file.length ()));} cathexception e) {System.erm.print (string (string (string (string (string (string (string.form.form.form.form. %s ", formatisize (file.length ()))); e.printstacktrace (); return false;} наконец {try {if (fis! = null) fis.close (); close (ftpclient);} catch (exception e) {}} return true;}4. Загрузите файл
/*** Загрузить файл* @param localpath local storage* @return*/public int скачать (String localpath) {// подключиться к ftp serverftpclient ftpclient = connect (); if (ftpclient == null) {system.out.println ("connect for ftp -сервер ["+host+":"+port+"] aterb! File (localpath); if (! Dir.exists ()) dir.mkdirs (); ftpfile [] ftpfiles = null; try {ftpfiles = ftpclient.listfiles (); if (ftpfiles == null || ftpfiles.length == 0) return 0;} catchexcept i = 0; i <ftpfiles.length; i ++) {fileOutputStream fos = null; try {string name = ftpfiles [i] .getName (); fos = new fileOutputStream (new File (dir.getAbSolutePath ()+file.separator+name)); System.out.out.println ("<PriceSting () file.Separator+name); Long Now = System.CurrentTimeMillis (); Boolean OK = ftpClient.retrieveFile (новая строка (name.getbytes ("utf-8"), "iso-8859-1"), fos); if (ok) {// Скачать успешно длительные времена = system.currenttimiLlis ()-system. %s, время загрузки: %d секунд ", formatize (ftpfiles [i] .getSize ()), times/1000)); c ++;} else {System.out.println (" <<< загрузить ");}} catch (ioexception e) {system.err.println (" <<< Pull "); Наконец {try {if (fos! = null) fos.close (); close (ftpclient);} catch (Exception e) {}}} return c;}Формат размер файла
Частный статический финальный DecimalFormat df = new DecimalFormat ("#. ##"); / ** * Размер файла формата (B, KB, MB, GB) * @param size * @return */ private String formatisize (long size) {if (size <1024) {return size + "b"; } else if (size <1024*1024) {return size/1024 + "kb"; } else if (size <1024*1024*1024) {return (size/(1024*1024)) + "mb"; } else {double gb = size/(1024*1024*1024); вернуть df.format (gb)+"gb"; }}V. Тест
public static void main (string args []) {ftptest ftp = new ftptest ("192.168.1.10", 21, null, null, "/temp/2016/12"); ftp.upload ("newfile.rar", "d: /ftp/teamviewerportable.rar"); System.out.println ("" "); ftp.download ("d:/ftp/"); }результат
=== Подключитесь к FTP: 192.168.1.10:21>>> Загрузка файла загрузки: TeamViewerPortable.rar >>> Загружено успешно: размер: 5 МБ, время загрузки: 3 секунды !!! Отключить FTP -соединение: 192.168.1.10:21===connect to ftp: 192.18.1.10:21. newfile.rar <<< Успешно обнаружен: размер: 5 МБ, время загрузки: 4 секунды !!! Отключенные FTP -соединение: 192.168.1.10:21
Суммировать
Выше приведено подробное объяснение использования Java of Apache Toolset для реализации кода передачи файлов FTP, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!