JDK1.7以上javaFTP上傳刪除文件的實(shí)現(xiàn)方法
實(shí)例如下:
packagecom.itv.launcher.util; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.net.InetSocketAddress; importjava.util.Properties; importjava.util.StringTokenizer; importsun.net.TelnetOutputStream; importsun.net.ftp.FtpClient; importsun.net.ftp.FtpProtocolException; /** * FTP上傳工具類(lèi) * * @author yanzhou * @version v1.0 */ publicclass FTPUtil { privatestatic FtpClient ftpClient = null; privatestatic final String url; privatestatic final int port; privatestatic final String user; privatestatic final String password; privatestatic final String remoteFilePath; static{ Properties FTPPro = ReadFTPProperties.getMsgFromPro(); url = FTPPro.getProperty("FTP_URL"); port = Integer.parseInt(FTPPro.getProperty("FTP_PORT")); user = FTPPro.getProperty("FTP_USER"); password = FTPPro.getProperty("FTP_PASSWORD"); remoteFilePath = FTPPro.getProperty("FTP_REMOTE_FILEPATH"); } /** * 鏈接FTP * @throws FtpProtocolException */ privatestatic void connectFTP() throwsFtpProtocolException { try{ ftpClient = FtpClient.create(); ftpClient.connect(newInetSocketAddress(url, port)); ftpClient.login(user, password.toCharArray()); ftpClient.setBinaryType(); if(!"".equals(remoteFilePath) && remoteFilePath != null) { ftpClient.changeDirectory(remoteFilePath); } }catch(IOException e) { e.printStackTrace(); } } /** * 關(guān)閉FTP鏈接 */ publicstatic void closeFTP() { try{ if(ftpClient != null) { ftpClient.close(); } }catch(IOException e) { e.printStackTrace(); } } /** * 上傳文件到FTP * @param file file文件,struts2從頁(yè)面得到的File類(lèi)型 * @param filePath 要保存在FTP上的路徑(文件夾) * @param fileName 文件名(test001.jpg) * @return 文件是否上傳成功 * @throws Exception */ publicstatic boolean upload(File file, String filePath, String fileName) { TelnetOutputStream to = null; FileInputStream fi = null; filePath = remoteFilePath + Constants.FILE_SEPARATOR + filePath; try{ if(file != null) { connectFTP(); if(!isDirExist(filePath.replace("\\","/"))) { createDir(filePath.replace("\\","/")); ftpClient.changeDirectory(filePath.replace("\\","/")); } fi = newFileInputStream(file); to = (TelnetOutputStream) ftpClient.putFileStream(fileName, true); byte[] bytes = newbyte[1024]; inti = fi.read(bytes); while(i != -1) { to.write(bytes); i = fi.read(bytes); } } returntrue; }catch(FileNotFoundException e1) { returnfalse; }catch(IOException e2) { returnfalse; }catch(Exception e) { returnfalse; }finally{ if(fi != null) { try{ fi.close(); }catch(IOException e) { e.printStackTrace(); } } if(to != null) { try{ to.flush(); to.close(); }catch(IOException e) { e.printStackTrace(); } } closeFTP(); } } /** * 刪除FTP制定目錄下的文件 * @param filePath 文件在FTP存儲(chǔ)的路徑 * @param fileName 要?jiǎng)h除的文件名稱 * @return 是否刪除成功 */ publicstatic boolean deleteFileFtp(String filePath, String fileName){ try{ connectFTP(); filePath = remoteFilePath + Constants.FILE_SEPARATOR + filePath + Constants.FILE_SEPARATOR; if(!isDirExist(filePath.replace("\\","/"))) { returnfalse; } ftpClient.changeDirectory(filePath.replace("\\","/")); ftpClient.deleteFile(fileName); returntrue; }catch(Exception e) { e.printStackTrace(); returnfalse; }finally{ closeFTP(); } } /** * 檢查文件夾是否存在 * * @param dir * @param ftpClient * @return */ privatestatic Boolean isDirExist(String dir) { try{ ftpClient.changeDirectory(dir); }catch(Exception e) { returnfalse; } returntrue; } /** * 創(chuàng)建文件夾 * * @param dir * @param ftpClient * @throws Exception */ privatestatic void createDir(String dir) throwsException { ftpClient.setAsciiType(); StringTokenizer s = newStringTokenizer(dir, "/");// sign s.countTokens(); String pathName = ""; while(s.hasMoreElements()) { pathName = pathName + "/"+ (String) s.nextElement(); try{ ftpClient.makeDirectory(pathName); }catch(Exception e) { e = null; } } ftpClient.setBinaryType(); } }
2. 常量類(lèi),系統(tǒng)的路徑分隔符
packagecom.itv.launcher.util; publicinterface Constants { //路徑分隔符 publicstatic String FILE_SEPARATOR = System.getProperty("file.separator"); }
3. FTP鏈接的配置properties文件,包括用戶名密碼一些信息
#FTP的IP地址 FTP_URL=127.0.0.1 #FTP端口號(hào) FTP_PORT=1234 #用戶名 FTP_USER=yanzhou #密碼 FTP_PASSWORD=abcdefg12345 #FTP賬號(hào)目錄 FTP_REMOTE_FILEPATH=
以上這篇JDK1.7以上javaFTP上傳刪除文件的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java基于棧方式解決漢諾塔問(wèn)題實(shí)例【遞歸與非遞歸算法】
這篇文章主要介紹了Java基于棧方式解決漢諾塔問(wèn)題的方法,結(jié)合實(shí)例形式分析了java棧方式采用遞歸與非遞歸算法解決漢諾塔問(wèn)題的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11Java_異常類(lèi)(錯(cuò)誤和異常,兩者的區(qū)別介紹)
下面小編就為大家?guī)?lái)一篇Java_異常類(lèi)(錯(cuò)誤和異常,兩者的區(qū)別介紹) 。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09mybatis多個(gè)區(qū)間處理方式(雙foreach循環(huán))
這篇文章主要介紹了mybatis多個(gè)區(qū)間處理方式(雙foreach循環(huán)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02SpringBoot使用郵箱發(fā)送驗(yàn)證碼實(shí)現(xiàn)注冊(cè)功能
這篇文章主要為大家詳細(xì)介紹了SpringBoot使用郵箱發(fā)送驗(yàn)證碼實(shí)現(xiàn)注冊(cè)功能實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02Spring MVC參數(shù)校驗(yàn)詳解(關(guān)于`@RequestBody`返回`400`)
這篇文章主要介紹了Spring MVC參數(shù)校驗(yàn)的相關(guān)資料,主要是針對(duì)`@RequestBody`返回`400`的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08