FTPファイルのアップロードおよびダウンロード(JAVA)

前文

      1、使用してFTPウェイアップロードおよびダウンロードファイル(非SFTP

      2、私が必要としている学生、コードは、単純で明瞭で理解し易いです、プロのテスト、手を打つ、彼らの実際のビジネス・ロジックと組み合わせを追加してください

      2、サードパーティのjarパッケージ:インポートorg.apache.commons.net.ftp.FTPClient。

コード

パッケージのメイン; 

輸入java.io.BufferedOutputStream。
輸入java.io.BufferedWriter。
インポートのjava.io.File; 
輸入java.io.FileInputStream; 
輸入java.io.FileNotFoundException。
輸入java.io.FileOutputStreamは、
輸入java.io.FileWriter; 
インポートにjava.io.IOException; 
輸入java.io.InputStreamを。
インポートにjava.io.OutputStream; 
インポートのjava.io.Writer; 
輸入はjava.util.List; 

輸入org.apache.commons.io.IOUtils。
輸入org.apache.commons.net.ftp.FTPClient。
輸入org.apache.commons.net.ftp.FTPFile。
輸入org.apache.commons.net.ftp.FTPReply; 

輸入Domain.FileInfoList。
輸入Domain.FtpConfig;
輸入Util.LoggerUtil;
 
パブリッククラスFTPUtils { 
	公共の静的な文字列ftp_IPファイナル=「192.168.0.6」; 
	パブリック静的整数最終ftp_port = 9001; 
	ファイナル=「管理者」FTP_USERパブリック静的文字列; 
	=「123」最終列ftp_pswパブリック静的; 

	公衆無効メイン静的(String型の引数[]){ 
		FTPから//ダウンロード
		downloadFromFTP(ftp_IP、ftp_port、FTP_USER、ftp_psw、 "/"、 "新しいテキストドキュメント.txtの"、 "E:"); 
		// FTPアップロードから
		uploadFromFTP( ftp_IP、ftp_port、FTP_USER、ftp_psw、 "/"、 "E:// 新しいテキストドキュメント.txtの作成"、 "新しいテキストドキュメント.txtは");
	} 
	/ ** 
	 * @paramのURLのIP 
	 * @paramポートポート
	 * @paramユーザー名ユーザー名
	 * @paramパスワードパスワード
	 サーバーremotePathは上の* @Paramパス 
	 * @paramファイル名のファイルがダウンロードされます
	 * localPathには、ローカルファイルに保存@param 
	 * / 
	パブリック静的ブールdownloadFromFTP(文字列URL、ポート、ユーザー名の文字列、文字列のパスワード、remotePathは文字列、int型
			のString fileNameに、文字列localPathにする){ 
		偽=成功ブール; 
		FTPClient FTPClient新しい新しいFTP =(); 
		のInputStream INPUT = NULL; 
		なBufferedOutputStreamライター= NULL; 
		= nullをすることにより、バイト[]; 
		試み{ 
			int型の返信、
			ftp.connect(URL、ポート); 
			// ftp.connect(URL); 
			/ /デフォルトのポートは、あなたが直接FTPサーバに接続されている(URL)ftp.connect使用できる場合
			ftp.login(ユーザー名、パスワード); //ログイン
			ftp.enterLocalPassiveMode(); 
			ftp.setControlEncoding( "GBKの");
			= ftp.getReplyCode応答(); 
			{(!FTPReply.isPositiveCompletion(返信))IF 
					出力ファイル//へ、それは自動的に上書きされますターゲットディレクトリは、ローカルディレクトリは、同じファイルがあるかどうかを判断する必要はありません。
				ftp.disconnect(); 
				成功を返す; 
			} 
			ftp.changeWorkingDirectory(remotePathは); //は、FTPサーバのディレクトリに転送
			FTPFILE []のfs =のftp.listFiles() ; // 現在のディレクトリ内のすべてのファイルを取得

			(FTPFILEのFFについて:FS ){ 
				IF(新しい新しいString(ff.getName()。GetBytesメソッド()、 "UTF-8")。等号(ファイル名は)){ 
					//ファイル名が表示され、中国が強制的にISO-8859-1に設定し、リターンはnullを防ぎます符号化方式は、入力ストリームかかる
					入力= ftp.retrieveFileStream( "/" +(新しい新しい文字列(ff.getName()GetBytesメソッド( "GBK")、 "ISO-8859-1"))); 
					新しい新しいバイトによる= [( int型)ff.getSize()]; 
					//バイト配列にファイルストリームを保存
					()によってinput.read; 
					writer.Write()によります。
					ライター=新しいBufferedOutputStreamが(新しいのFileOutputStream(localPathに+ "/" + fileNameに)); 
					System.out.println( "输出指定文件【" + fileNameに+ "】到本地目录:" +でlocalPath + "/" + fileNameに+ "成功")。
				} 
			} 
			//断开FTP连接
			ftp.logout()。
			成功=はtrue。
		}キャッチ(IOExceptionを電子){ 
			e.printStackTrace(); 
		}最後に{ 
			
			場合(ftp.isConnected()){ 
				{しようとし
					た場合(!ライター= NULL){ 
						writer.close(); 
					} 
					IF(!入力= NULL){ 
						input.close()。
					} 
					ftp.disconnect()。
				}キャッチ(IOExceptionをIOE){ 
				} 
			} 
		} 
		戻り成功。
	 
	/ ** 
	 * FTPアップロード単一ファイル
	 * 
	 * @paramのFTPアドレスftpIP
	 * @Paramポートのポート番号
	 * @paramユーザ名ftpユーザ名
	 * @paramパスワードFTPパスワード
	 * @paramディレクトリFTPパス名にアップロードするには、ファイル名が含まれていません
	 * @param localFilePathローカルファイルのフルパス名をアップロードする
	 * @param FTPへのdestNameは、ファイル名を格納している
	 * @throws IOExceptionが  
	 * / 
	パブリックブールuploadFromFTP(ftpIP文字列、整数ポート、ユーザー名の文字列、文字列のパスワード、文字列ディレクトリ、localFilePath文字列、文字列destName){静的


		FTPClient新しい新しいFTPClient ftpClient =(); 
		FIS = nullをFileInputStreamを、
		ブール= falseに結果; 
		試し{ 
			ftpClient.connect(ftpIP、ポート); 
			ftpClient.login(ユーザー名、パスワード); 
			ftpClient.enterLocalPassiveModeを(); 
			//設定アップロードディレクトリ
			ftpClient.changeWorkingDirectory(ディレクトリ); 
			ftpClient.setBufferSize(1024); 
			ftpClient.setConnectTimeout(10 * 1000); 
			ftpClient.setControlEncoding( "GBK"); 
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
			//中国のファイル名の出現を防ぐが返されますnullの場合、ファイル名は、ファイルの削除ISO-8859-1符号化方式に設定されている強制
			ftpClient.deleteFile(ディレクトリ+新しい新しいString(destName.getBytes( "GBK")、 "ISO-8859-1")); 
			ファイルSRCFILEファイルの新しい=(localFilePath)新しい; 
			FIS新しい新=のFileInputStream(SRCFILE); 
			// FTPサーバーにアップロード==防ぐ中国のファイル名は、ファイル名はISO-8859-1エンコーディングアップロード強制的に配置され、nullを返し見える
			結果を= ftpClient.storeFile((ディレクトリ+新しいString( destName.getBytes( "GBK")、 "ISO-8859-1"))、FIS);

		}キャッチ(NumberFormatExceptionが電子){ 
			をSystem.err。println( "FTPポートの設定エラー:いない番号:");
		}キャッチ(にFileNotFoundException電子){ 
			e.printStackTrace(); 
		}キャッチ(IOExceptionを電子){ 
			e.printStackTrace(); 
		}最後に{ 
			IOUtils.closeQuietly(FIS)。
			{試みる
				ftpClient.disconnect()。
			}キャッチ(のIOException e)の{ 
				新しいのRuntimeException( "!关闭FTP连接发生异常"、e)を投げます。
			} 
		} 
		戻り値の結果; 
	} 
}

  

おすすめ

転載: www.cnblogs.com/hzb462606/p/11084820.html