Artikel ini terutama memperkenalkan cara menggunakan alat FTP yang disediakan oleh Apache Toolset Commons-Net untuk mengunggah dan mengunduh file ke server FTP.
1. Persiapan
Perlu merujuk pada paket commons-net-3.5.jar.
Impor menggunakan Maven:
<dependency> <GroupId> commons-net </groupid> <ArTifactId> commons-net </artifactid> <version> 3.5 </version> </dependency>
Unduh Manual:
//www.vevb.com/softs/550085.html
2. Sambungkan ke server FTP
/** * Terhubung ke server ftp * @throws ioException */string final statis publik anonymous_user = "anonymous"; private ftpclient connect () {ftpclient client = new ftpclient (); cobalah {// connect ftp serverclient.connect (this.host, this.por); if (this.user == null || "". sama (this.user)) {// login di client.login (anonymous_user, anonymous_user);} else {client.login (this.user, this.password);} // atur file format cyfli clieptfileType (ftpassword); Balas = client.getReplycode (); if (! ftpreply.ispositiveCompletion (balasan)) {client.disconnect (); return null;} // ganti Direktori Kerja ChangeweworkingDirectory (klien); System.out.println ("=== Hubungkan ke ftp:"+host+") {host) {{{{{{port); klien;}/*** Ganti direktori yang berfungsi. Ketika direktori jarak jauh tidak ada, buat direktori * @param client * @throws ioException */private void ubahworkingDirectory (klien ftpClient) melempar ioException {if (this.ftppath! = Null &&! " client.changeworkingDirectory (this.ftppath); if (! ok) {// ftppath tidak ada, buat direktori secara manual stringTokenizer token = new stringTokenizer (this.ftppath, "////"); while (token.hasmoretokens ()) {string path = = string Path = = "); token.nextToken (); client.makedirectory (path); client.changeworkingDirectory (path);}}}}/** * Lepaskan koneksi ftp * @param ftpclient * @throws ioException */public void tutup (ftpclient ftpclient ftpclient ftpclient) iftpclient iftpclient o (ftpclient ftpclient ftpclient o (ftpclient ftpclient o (ftpclient ftpclient * cclient ftpclient * = ftpClient o (ftpclient ftpclient) ftpclient.isconnected ()) {ftpclient.logout (); ftpclient.disconnect ();} system.out.println ("!!! Host: Alamat IP Server FTP
Port: port server FTP
Pengguna: Pengguna Masuk
Kata sandi: Saat kata sandi login kosong, gunakan pengguna anonim untuk masuk.
FTPPATH: Jalur FTP, secara otomatis dibuat ketika jalur FTP tidak ada. Jika itu adalah struktur direktori multi-lapisan, perlu membuat direktori secara iteratif.
3. Unggah file
/*** Unggah File* @param TargetName Unggah ke nama file ftp* @param localfile path file lokal* @return*/unggah public boolean (string targetname, string localfile) {// connect ftp serverftpclient ftpclient = connect (); if (ftpclient == null) {system.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.OUnt. server ["+host+": "+port+"] gagal! "); return false;} file file = file baru (localfile); // atur nama file setelah unggah if (targetName == null ||" ". Equals (targetName)) targetName = file.getName (); FileInputStream fis = null; try {long now now = File. FileInputStream (file); System.out.println (">>> Mulai mengunggah file:"+file.getName ()); boolean ok = ftpclient.storefile (targetName, fis); if (ok) {// unggah lama dengan sounts = System.currentTimeMillis () - sekarang - sekarang; sekarang; Ukuran: %s, waktu unggah: %d detik ", formatsize (file.length ()), kali/1000));} else // unggah gagal system.out.println (string.format (" >>> unggah gagal: ukuran s ", formate (file.length ()));} catch (ioException E), formate (file.length ())));} catch (ioException E), format. Gagal: ukuran: %s ", formatsize (file.length ()))); e.printstacktrace (); return false;} akhirnya {coba {if (fis! = null) fis.close (); tutup (ftpclient);} catch (pengecualian e) {}} return true;}4. Unduh file
/*** Unduh File* @param Path Penyimpanan Lokal Lokal* @Return*/Unduh Public Int (String LocalPath) {// Sambungkan ke FTP ServerftpClient ftpClient = connect (); if (ftpClient == null) {System.out.println ("Connect ke server ftp ["+host+":": ":": " File (localpath); if (! Dir.exists ()) dir.mkdirs (); ftpfile [] ftpfiles = null; coba {ftpfiles = ftpclient.listfiles (); if (ftpfiles == null || ftpfiles.listFiles == 0) return 0; (int i = 0; i <ftpfiles.length; i ++) {fileoutputStream fos = null; coba {string name = ftpfiles [i] .getname (); fos = fileOnputStream baru (dir.getabsolutePath ()+file.separator+name); out.out.out.out.out.out. long now = system.currentTimeMillis (); boolean ok = ftpclient.retrieveFile (string baru (name.getbytes ("UTF-8"), "ISO-8859-1"), fos); if (OK) {// unduh Long Long Long = System.currentTimemillis (PIFT)-sekarang; Ukuran: %s, waktu unggah: %d detik ", formatsize (ftpfiles [i] .getsize ()), kali/1000)); c ++;} else {system.out.println (" <<< unduhan ");}} catch (ioException e) {System.err.println"); Akhirnya {coba {if (fos! = null) fos.close (); tutup (ftpclient);} catch (exception e) {}}} return c;}Ukuran file format
private static final decimalformat df = new decimalformat ("#. ##"); / ** * format ukuran file (b, kb, mb, gb) * @param size * @return */ private string formatsize (ukuran panjang) {if (size <1024) {return size + "b"; } lain jika (ukuran <1024*1024) {ukuran pengembalian/1024 + "kb"; } lain jika (ukuran <1024*1024*1024) {return (size/(1024*1024)) + "mb"; } else {double gb = size/(1024*1024*1024); return df.format (gb)+"gb"; }}V. tes
public static void main (string args []) {ftptest ftp = ftptest baru ("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/"); }hasil
=== Hubungkan ke FTP: 192.168.1.10:21>>> Mulai unggah newfile.rar <<< Ditemukan dengan sukses: Ukuran: 5 MB, Unggah Waktu: 4 detik !!! Koneksi FTP yang terputus: 192.168.1.10:21
Meringkaskan
Di atas adalah semua penjelasan terperinci tentang penggunaan alat APACHE Java untuk mengimplementasikan kode transfer file FTP, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!