Javaコードは、FTPサーバーツールにアップロードされます

パッケージcom.uisftech.elec.demo.util。

輸入org.apache.commons.net.ftp.FTPClient;
輸入org.apache.commons.net.ftp.FTPFile;
輸入org.apache.commons.net.ftp.FTPReply;
輸入java.io. *;
輸入java.net.MalformedURLException;

/ **
* @author LZW
* @date 2019年6月7日
* /
パブリッククラスFTPClientUtils {

公共FTPClient ftpClient = NULL;

/ **
*初始化FTP服务器
* /
パブリック無効initFtpClient(文字列のホスト名、int型ポート、文字列のユーザ名、文字列のパスワード){
ftpClient =新しいFTPClient();
ftpClient.setControlEncoding( "UTF-8");
{試します
System.out.printlnは( "接続する... FTPサーバーを:" +で、hostName +の":" +ポート);
(ホスト名、ポートの)ftpClient.connect; // FTPサーバが接続されている
ftpClient.enterLocalPassiveModeを(); //アクティブモード
ftpClient。ログイン(ユーザ名、パスワード); FTPサーバ内の//ログイン
int型replyCode = ftpClient.getReplyCode(); //ログイン成功サーバ
(!FTPReply.isPositiveCompletion(replyCode)){IF
のSystem.out.printlnは(「接続に失敗しました... FTPサーバー: "+ホスト名+": "+ポート);
}
System.out.printlnは("接続成功... FTPサーバー: "+で、hostName +の":「+ポート);
}キャッチ(例外:MalformedURLException E){
e.printStackTrace( );
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}
}

/ **
*ファイルのアップロード
* @paramパス名、FTPサービスの保存アドレス
* @param fileNameにアップロードされたFTPのファイル名に
* @param originFileNameは、ファイルをアップロードするには、名前(絶対アドレス)も*
* @return
* /
パブリックブールuploadFile(文字列パス名、文字列のファイル名、文字列originFileName){
boolean型フラグ= falseは、
InputStream InputStreamは= nullを
試し{
System.out.printlnは( "アップロードファイルを起動する");
InputStreamの=新しい新しいFileInputStreamを(新しい新しいファイル(originFileName));
ftpClient.setFileType( ftpClient.BINARY_FILE_TYPE);
CreateDirectory(パス名);
ftpClient.makeDirectory(パス名)。
ftpClient.changeWorkingDirectory(パス名)。
ftpClient.storeFile(ファイル名を値、INPUTSTREAM)。
inputStream.close();
ftpClient.logout();
フラグが真=。
System.out.println( "上传文件成功!");
}キャッチ(例外e){
System.out.printlnは( "上传文件失败!")。
e.printStackTrace();
}最後に{
IF(ftpClient.isConnected()){
試み{
ftpClient.disconnect()。
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}
}
もし(NULL!=のinputStream){
{トライ
inputStream.close();
}キャッチ(IOExceptionをE){
e.printStackTrace();
}
}
}
をtrueに復帰;
}
/ **
*アップロード
* @paramパス名、FTPサービスの保存アドレス
* @param fileNameがFTPにアップロードファイル名
* @param InputStreamの入力ストリームファイル
* @return
* /
パブリックブールuploadFile(パス名の文字列、文字列のファイル名、InputStream InputStreamは){
falseにブール=内のフラグは、
試してみる{
System.out.printlnは( "アップロードファイルを起動する");
ftpClient。 setFileType(ftpClient.BINARY_FILE_TYPE)。
CreateDirectory(パス名)。
ftpClient.makeDirectory(パス名)。
ftpClient.changeWorkingDirectory(パス名)。
ftpClient.storeFile(ファイル名を値、INPUTSTREAM)。
inputStream.close();
ftpClient.logout();
フラグが真=。
System.out.println( "上传文件成功!");
}キャッチ(例外e){
System.out.printlnは( "上传文件失败!")。
e.printStackTrace();
}最後に{
IF(ftpClient.isConnected()){
試み{
ftpClient.disconnect()。
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}
}
IF(ヌル= InputStreamの!){
試み{
inputStream.close();
}キャッチ(IOExceptionをE){
e.printStackTrace();
}
}
}
をtrueに復帰;
}
//変更のディレクトリパス
パブリックブールchangeWorkingDirectory(文字列のディレクトリ) {
trueにブール=で旗;
試み{
のフラグ= ftpClient.changeWorkingDirectory(ディレクトリ);
IF(のフラグ){
System.out.printlnは( "フォルダに" +ディレクトリ+ "成功!");

}他{
System.out.println( "フォルダに" +ディレクトリ+ "...フォルダの作成を開始することができなかった!");
}
}キャッチ(IOExceptionをIOE){
ioe.printStackTrace();
}
フラグを返す;
}

//より作成層のディレクトリのファイル、ファイルがすでに存在する場合、FTPサーバー、作成されていない、そうでない場合は、作成
(リモート文字列)パブリックブールCreateDirectoryをIOExceptionが{スロー
trueにブール=成功;
文字列は、+リモートディレクトリを=「/」;
//リモートであればディレクトリが存在し、再帰的にリモートサーバのディレクトリを作成していない
IF(directory.equalsIgnoreCase( "/")&& changeWorkingDirectory(新しい新しい文字列(ディレクトリ))!!){
int型スタート= 0;
int型エンド= 0;
IF(directory.startsWith( " / ")){
1 =開始。
}そうでなければ{
= 0を開始します。
}
端= directory.indexOf( "/"、開始)。
文字列のパス=「」;
ストリング・パス=「」;
(TRUE){一方
、((開始、終了).getBytes( "GBK")、 "ISO-8859-1" remote.substring)文字列のサブディレクトリ=新しいString
パス=パス+「/」+サブディレクトリ。
IF(existFile(パス)!){
IF(makeDirectory(サブディレクトリ)){
changeWorkingDirectory(サブディレクトリ)。
} {他
のSystem.out.println( "创建目录[" +サブディレクトリ+ "]失败!")。
changeWorkingDirectory(サブディレクトリ);
}
}他{
changeWorkingDirectory(サブディレクトリ);
}

パスパス= + "/" +サブディレクトリ;
開始終了= + 1;
エンド= directory.indexOf( "/"、スタート);
//チェックすべてのディレクトリであれば作成された
(終了<=スタート){IF
BREAK;
}
}
}
成功を返す;
}

// FTPサーバーは、ファイルが存在するかどうかを決定する
のIOException {スローパブリックブールexistfile(文字列のパス)
をfalseにブール=のフラグを。
FTPFILE [] = ftpFileArr ftpClient.listFiles(パス);
IF(ftpFileArr.length> 0){
trueに、フラグ=;
}
フラグに戻り;
}
//ディレクトリ作成
パブリックブールMakeDirectory(文字列DIR){
trueにブール=でフラグを、
試み{
内のフラグftpClient.makeDirectory =(DIR);
IF(フラグ){
System.out.printlnは( "フォルダの作成" + DIR + "成功!");

}他{
System.out.printlnは( "フォルダの作成" + DIR + "失敗した!");
}
}キャッチ(例外E){
e.printStackTrace();
}
フラグに復帰。
}

/ **
*ダウンロードファイル
* @paramパス名FTPサーバーのファイルディレクトリ*
* @param fileNameにファイル名*
ダウンロード後* @param localPathにファイルパス*
* @return
* /
パブリックブールdownloadFile(パス名の文字列、文字列のファイル名、文字列localPathに){
boolean型フラグfalseに=;
OutputStreamのOS = NULL;
試み{
System.out.printlnは( "...ファイルのダウンロードを開始する");
//スイッチFTPディレクトリ
ftpClient.changeWorkingDirectory(パス名);
FTPFILE [] = ftpFiles ftpClient.listFiles();
について(FTPFILEファイル:ftpFiles){
IF(fileName.equalsIgnoreCase(file.getName())){
ファイルLOCALFILE =新しいファイル(localPathに+ "/" + file.getName());
OS =新しいのFileOutputStream(LOCALFILE)。
ftpClient.retrieveFile(file.getName()、OS)。
os.close();
}
}
ftpClient.logout()。
フラグが真=。
System.out.println( "下载文件成功!");
}キャッチ(例外e){
System.out.printlnは( "下载文件失败!")。
e.printStackTrace();
}最後に{
IF(ftpClient.isConnected()){
試み{
ftpClient.disconnect()。
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}
}
IF(ヌル= OS!){
試み{
にos.close();
}キャッチ(IOExceptionをE){
e.printStackTrace();
}
}
}
フラグにリターン;
}

/ ** *ファイルの削除*
* @paramパス名、ディレクトリの保存FTPサーバー*
* @param fileNameにファイル名を削除する*
* @return
* /
パブリックブールDELETEFILE(パス名の文字列、文字列fileNameに){
boolean型フラグ= falseは、
試してみる{
System.out.printlnは( "ファイルの削除を開始...「);
//スイッチFTPディレクトリ
ftpClient.changeWorkingDirectory(パス名);
ftpClient.dele(fileNameに);
; ftpClient.logout()
真=へのフラグ;
System.out.printlnは( "ファイルが正常に削除された!");
}キャッチ(例外E){
System.out.println( "ファイル削除に失敗しました!");
e.printStackTrace();
}最後に{
IF(ftpClient.isConnected()){
試み{
ftpClient.disconnect();
}キャッチ(IOExceptionをE){
e.printStackTrace ();
}
}
}
でフラグを返します;
}

パブリック静的無効メイン(文字列[] args){
FTPClientUtils FTP =新しいFTPClientUtils()。
ftp.initFtpClient( "172.20.10.11"、21、 "aseit"、 "12345678")。
//ftp.uploadFile("/images」、 "xiazi.jpg"、 "D:/xiazi.jpg")。
ftp.downloadFile( "画像"、 "xiazi.jpg"、 "D://本");
//ftp.deleteFile("images」、 "123.jpg");
//System.out.println("ok ");
}
}

おすすめ

転載: www.cnblogs.com/zhiweijq/p/12172285.html