FTPは、ファイル転送プロトコル(ファイル転送プロトコル)の英語の略語であり、中国の略語は「書面転送プロトコル」と呼ばれます。インターネット上の制御ファイルの双方向転送に使用されます。同時に、それもアプリケーションです。さまざまなオペレーティングシステムに基づいたさまざまなFTPアプリケーションがあり、これらのアプリケーションはすべて同じプロトコルに準拠してファイルを転送します。 FTPの使用では、ユーザーはしばしば「ダウンロード」と「アップロード」という2つの概念に遭遇します。 「ダウンロード」ファイルとは、リモートホストから自分のコンピューターにファイルをコピーすることを意味します。 「アップロード」ファイルとは、自分のコンピューターからリモートホストにファイルをコピーすることを意味します。インターネット言語では、ユーザーはクライアントプログラムを介してリモートホストに(Fromから)ファイルをアップロード(ダウンロード)できます。
最初に、Serv-Uをダウンロードして、簡単に操作するためにコンピューターをFTPファイルサーバーとしてセットアップしました。次のコードはFTPサーバーで使用されており、FTP接続の関連データをコードに記入するには記述する必要があります。
1。FTPファイルのアップロードとダウンロード(個々のファイルのアップロードとダウンロードであることに注意してください)
Import java.io.file; Import java.io.fileinputStream; Import java.io.filenotfoundexception; Import java.io.fileoutputStream; Import java.io.inputStream; Import java.inputStream; Import Java.io.OutputStream; Import.Commons.net.net org.apache.commons.net.ftpclient; Import org.apache.commons.net.ftp.ftpfile; Import org.apache.commons.net.ftp.ftpreply;/*** FTPファイルアップロードおよびファイルダウンロード*/public ftpclient = private static ftpclient() private static string encoding = system.getProperty( "file.Encoding"); /** *説明:ファイルをFTPサーバーにアップロード * * @バージョン1.0 * @Param URL * ftpサーバーホスト名 * @paramポート * ftpサーバーポート * @param username * ftp loginアカウント * @paramパスワード * ftpログインパスワード * @param path * ftp server saves directory ftp server * @param input *ローカルファイル入力ストリーム * @return trueを正常に返します。それ以外の場合は、false */ public static boolean uploadfile(string url、int port、string username、string password、string path、string filename、inputstream input){boolean result = fals; {int Reply; //デフォルトのポートを使用する場合、FTPサーバーftpclient.connect(url)に直接接続できます。 // ftp.connect(url、port); // ftp serverを接続// ftpclient.login(username、password)にログインします。 ftpclient.setControlencoding(エンコード); //接続が成功していることを確認しますReply = ftpclient.getReplyCode(); if(!ftpreply.ispositiveCompletion(Reply)){system.out.println( "接続失敗"); ftpclient.disconnect();返品結果; } //作業ディレクトリを指定されたディレクトリに転送ブール変更= ftpclient.changeworkingdirectory(path); ftpclient.setfiletype(ftp.binary_file_type); if(change){result = ftpclient.storefile(new String(filename.getBytes(encoding)、 "ISO-8859-1")、input); if(result){system.out.println( "Uploaded raded upload!"); }} input.close(); ftpclient.logout(); } catch(ioexception e){e.printstacktrace(); }最後に{if(ftpclient.isconnected()){try {ftpclient.disconnect(); } catch(ioexception ioe){}}} return result; }/***ローカルファイルをFTPサーバーにアップロードします**/public void testuploadfromdisk(){try {fileInputStream in = new FileInputStream(new File( "d:/test02/list.txt")); boolean flag = uploadfile( "10.0.0.102"、21、 "admin"、 "123456"、 "/"、 "lis.txt"、in); System.out.println(flag); } catch(filenotfoundexception e){e.printstacktrace(); }} /** *説明:FTPサーバーからファイルをダウンロード * * @バージョン1.0 * @param url * ftp server hostname * @param port * ftp server port * @param username * ftp password * @paramパスワード * @paramパスワード * ftpログインパスワード * * @return */ public static boolean downfile(string url、int port、string username、string password、string remotepath、string filename、string localpath){boolean result = false; {int Reply; ftpclient.setControlencoding(エンコード); / * *中国のファイルをアップロードしてダウンロードするために、一部の場所では、 * new String(Remotepath.getBytes(エンコード)、「ISO-8859-1」)トランスコーディングの代わりに、次の2つの文を使用することをお勧めします。 *テスト後、渡すことはできません。 */// ftpclientconfig conf = new ftpclientconfig(ftpclientconfig.syst_nt); // conf.setserverlanguagecode( "zh"); ftpclient.connect(url、port); //デフォルトのポートを使用する場合、ftpclient.login(username、password); // login //ファイル転送タイプをbinary ftpclient.setfiletype(ftpclient.binary_file_type)に設定して、ftpclient.login(username、password)によって直接FTPサーバーに接続できます。 // ftpログイン応答コードを取得しますReply = ftpclient.getReplyCode(); //ログインが成功していることを確認します(!ftpreply.ispositiveCompletion(reply)){ftpclient.disconnect(); System.err.println( "FTPサーバーが接続を拒否しました。");返品結果; } // ftpサーバーディレクトリに指定されたディレクトリftpclient.changeworkingdirectory(new String(Remotepath.getBytes(エンコーディング)、 "ISO-8859-1"))に転送されます。 //ファイルリストを取得ftpfile [] fs = ftpclient.listfiles(); for(ftpfile ff:fs){if(ff.getname()。equals(filename)){file localfile = new file(localpath + "/" + ff.getName()); outputStream is = new fileoutputStream(localfile); ftpclient.retrievefile(ff.getname()、is); is.close(); }} ftpclient.logout(); result = true; } catch(ioexception e){e.printstacktrace(); }最後に{if(ftpclient.isconnected()){try {ftpclient.disconnect(); } catch(ioexception ioe){}}} return result; }/** * ftpサーバーのファイルをローカルにダウンロード * * */public void testdownfile(){try {boolean flag = downfile( "10.0.0.102"、21、 "admin"、 "123456"、 "/"、 "ip.txt"、 "e:/"); System.out.println(flag); } catch(Exception e){e.printstacktrace(); }} public static void main(string [] args){ftpapche fa = new ftpapche(); fa.testdownfile(); fa.testuploadfromdisk(); }}2。FTPフォルダーのアップロードとダウンロード(フォルダー全体がフォルダー全体であることに注意してください)
パッケージftp; import java.io.bufferedinputStream; Import java.io.bufferedOutputStream; Import java.io.file; Import java.fileinputStream; Import java.io.fileenotfoundexception; Import Java.io.fileOutStream; Import java.io.io.io.ioextutrem; org.apache.commons.ftp.ftpclient; import org.apache.commons.net.ftpclientconfig; Import org.apache.commons.net.ftp.ftpfile; import org.apache.commons.net.ftp.ftpleply; import.apach.log.log4j.logger; ftpclient ftpclient;プライベートストリングストリップ;プライベートイントポート;プライベート文字列ユーザー。プライベート文字列パスワード。 private static logger logger = logger.getLogger(ftptest_04.class.getName()); / * * * ftp constructor */ public ftptest_04(string strip、int intport、string user、string password){this.strip = strip; this.intport = intport; this.user = user; this.password = password; this.ftpclient = new ftpclient(); } / *** @returnログインが成功するかどうかを決定** / public boolean ftplogin(){boolean islogin = false; ftpclientconfig ftpclientconfig = new ftpclientconfig(); ftpclientconfig.setservertimezoneid(timezone.getDefault()。getId()); this.ftpclient.setControlencoding( "gbk"); this.ftpclient.configure(ftpclientConfig); try {if(this.intport> 0){this.ftpclient.connect(this.strip、this.intport); } else {this.ftpclient.connect(this.strip); } // ftpサーバー接続回答int Reply = this.ftpclient.getReplyCode(); if(!ftpreply.ispositiveCompletion(Reply)){this.ftpclient.disconnect(); logger.error( "FTPサービスへのログインFAILED!"); Isloginを返します。 } this.ftpclient.login(this.user、this.password); //送信プロトコルthis.ftpclient.enterlocalpassivemode()を設定します。 this.ftpclient.setFiletype(ftpclient.binary_file_type); logger.info( "おめでとう" + this.user + "FTPサーバーに正常にログインした"); Islogin = true; } catch(Exception e){e.printstacktrace(); logger.error(this.user + "ftpサービスへのログインfailed!" + e.getmessage()); } this.ftpclient.setBufferSize(1024 * 2); this.ftpclient.setDatatimeOut(30 * 1000); Isloginを返します。 }/ *** @exit close server link**/ public void ftplogout(){if(null!= this.ftpclient && this.ftpclient.isconned()){try {boolean reuslt = this.ftpclient.logout(); }} catch(ioexception e){e.printstacktrace(); logger.warn( "FTPサーバーの終了を例外!" + e.getMessage()); }最後に{try {this.ftpclient.disconnect(); // ftpサーバーへの接続を閉じる} catch(ioexception e){e.printstacktrace(); logger.warn( "FTPサーバーの接続を閉じることを例外!"); }}}}}/**** ftpファイルをアップロード* @param localfile local file* @param romotuploadepath upload serverパス - /**/public boolean uploadfile(ファイルlocalfile、string romotuploadepath){bufferedinputestream = null;ブールの成功= false; try {this.ftpclient.changeworkingdirectory(romotuploadepath); //作業パスinstream = new bufferedinputStream(new FileInputStream(localFile)); logger.info(localfile.getname() + "起動アップロード..."); success = this.ftpclient.storefile(localfile.getname()、instream); if(success == true){logger.info(localfile.getname() + "uploaded rauded");成功を返す; }} catch(filenotfoundexception e){e.printstacktrace(); logger.error(localfile + "not not ing"); } catch(ioexception e){e.printstacktrace(); }最後に{if(instream!= null){try {instream.close(); } catch(ioexception e){e.printstacktrace(); }}} return success; } / ****ファイルをダウンロード* @param remotefileNameファイル名をダウンロードします* @param localdiresダウンロードローカルパスへ* @param remotedownloadpath remotefileNameが位置するパスBufferedOutputStream OutStream = null;ブールの成功= false; try {this.ftpclient.changeworkingdirectory(remotedownloadpath); outStream = new BufferedOutputStream(new FileOutputStream(strfilepath)); logger.info(remotefilename + "start download ..."); success = this.ftpclient.retrievefile(remotefileName、outstream); if(success == true){logger.info(remotefileName + "に正常にダウンロードされた" + strfilepath);成功を返す; }} catch(例外e){e.printstacktrace(); logger.error(remotefilename + "download failed"); }最後に{if(null!= outstream){try {outstream.flush(); outstream.close(); } catch(ioexception e){e.printstacktrace(); }}} if(success == false){logger.error(remotefilename + "lown failed !!!"); }成功を返す; }/**** @uploadフォルダー* @param localdirectory* local folder* @param remotedirectorypath* ftpサーバーパスはディレクトリで終了します。 {RemotedirectoryPath = RemotedirectoryPath + Src.getName() + "/"; boolean makedirflag = this.ftpclient.makedirectory(RemotedirectoryPath); System.out.println( "localdirectory:" + localdirectory); System.out.println( "RemotedirectoryPath:" + RemotedirectoryPath); System.out.println( "src.getName():" + src.getName()); System.out.println( "RemotedirectoryPath:" + RemotedirectoryPath); System.out.println( "makedirflag:" + makedirflag); // ftpclient.listdirectories(); } catch(ioexception e){e.printstacktrace(); logger.info(RemotedirectoryPath + "ディレクトリの作成に失敗した"); } file [] allfile = src.listfiles(); for(int currentFile = 0; currentFile <allfile.length; currentFile ++){if(!allfile [currentFile] .isdirectory()){string srcname = allfile [currentFile] .getPath()。toString(); uploadfile(new File(srcname)、RemotedirectoryPath); }} for(int currentFile = 0; currentFile <allfile.length; currentFile ++){if(allfile [currentFile] .isdirectory()){//再帰的uploaddirectory(allfile] .getPath()。 }} trueを返します。 } / **** @downloadフォルダー* @param localdirectorypathローカルアドレス* @param remotedirectoryリモートフォルダー** / public boolean dowalldirectory(string localdirectorypath、string remotedirectory){try {string filename = new file(remotedirectory).getname(); localdirectorypath = localdirectorypath + filename + "//";新しいファイル(localdirectorypath).mkdirs(); ftpfile [] allfile = this.ftpclient.listfiles(remotedirectory); for(int currentFile = 0; currentFile <allfile.length; currentFile ++){if(!allfile [currentFile] .isdirectory()){downloadfile(allfile [currentFile] .getName()、localDirectoryPath、Remotedirectory); }} for(int currentFile = 0; currentFile <allfile.length; currentFile ++){if(allfile [currentFile] .isdirectory()){string strremotedirectorypath = Remotedirectory+ "/"+ allfile [currentFile] .getName(); DownloadDirectory(LocalDirectoryPath、StrremotedirectoryPath); }}} catch(ioexception e){e.printstacktrace(); logger.info( "フォルダーのダウンロードFailed"); falseを返します。 } trueを返します。 } // ftpclientセットと取得関数public ftpclient getFtpClient(){return ftpclient; } public void setFtpClient(ftpClient ftpclient){this.ftpclient = ftpclient; } public static void main(string [] args)throws ioexception {ftptest_04 ftp = new ftptest_04( "10.0.0.102"、21、 "admin"、 "123456"); ftp.ftplogin(); System.out.println( "1"); // upload folder boolean uploadflag = ftp.uploaddirectory( "d:// test02"、 "/"); // admin//の場合、すべてのファイルが渡されます。それが正しい場合、それはフォルダーsystem.out.println( "uploadflag:" + uploadflag)に渡されます。 //フォルダーftp.downloaddirectory( "d:// tm"、 "/")をダウンロードしてください。 ftp.ftplogout(); }}上記はこの記事のすべての内容です。この記事の内容が、すべての人の勉強や仕事に役立つことを願っています。また、wulin.comをもっとサポートしたいと思っています!