複製程式碼如下:
導入 java.io.ByteArrayInputStream;
導入 java.io.FileOutputStream;
導入java.io.IOException;
導入 java.net.SocketException;
導入 java.text.SimpleDateFormat;
導入 java.util.Date;
導入 org.apache.commons.io.IOUtils;
導入 org.apache.commons.net.ftp.FTPClient;
/**
* 類別名稱:FTPFileTransmit <BR>
* 班級描述:請寫下您的描述<BR>
* 備註:<BR>
* @版本1.00 2011-8-9
*/
公共類別 FTPFileTransmit {
私有字符串 ftpPath;
私有字符串 ftpName;
私有字串 ftp 密碼;
私有字串 ftpServerIP;
公共 FTPFileTransmit() {
this.ftpPath = "xxx/xxx/";
this.ftpName = "名稱";
this.ftpPassword = "通過";
this.ftpServerIP = "192.168.0.xx";
}
/**
* 方法名稱:saveInFTP <BR>
* 描述: 把檔案儲存在FTP上 <BR>
* 備註:<BR>
* @paramFolderName 範例"xxx/xxx/"
* @param FileName 範例"thefilename"
* @param data byte[] 內存
* @return 布林值<BR>
*/
公共布爾saveInFTP(字串資料夾名,字串檔名,位元組[]資料){
布爾標誌= false;
//建立FTP客戶端
FTPClient ftpClient = new FTPClient();
// 輸入流用於讀取文件
// 檔案輸入流 fis = null;
ByteArrayInputStream之二=空;
嘗試 {
// 如果FolderName和FileName都不符合基本要求,那麼現在就沒有必要進行ftp操作
if (資料夾名稱!= null
&& 資料夾名稱.compareTo("") != 0
&& 檔名 != null
&& FileName.compareTo("") != 0) {
// 建立FTP連接
ftpClient.connect(this.ftpServerIP);
// 若登入成功後,才進行建立輸入流
if (ftpClient.login(this.ftpName, this.ftpPassword)) {
// 檔案 srcClientFile = new File("C:/ParseXML.xml");
// 實例化輸入流
// fis = new FileInputStream(srcClientFile);
if (ftpClient.changeWorkingDirectory(FolderName)) {
// 將byte[]寫入到輸入流中,實例化
bis = new ByteArrayInputStream(資料);
// 緩衝
ftpClient.setBufferSize(1024);
// 設定檔案類型(二進位類型)
如果(ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)){
標誌 = ftpClient.storeFile(檔案名稱, bis);
}
}
}
}
} catch (SocketException e) {
e.printStackTrace();
標誌=假;
} catch (IOException e) {
e.printStackTrace();
標誌=假;
} catch (異常 e) {
e.printStackTrace();
標誌=假;
} 最後 {
嘗試 {
// 關閉輸入流
IOUtils.closeQuietly(bis);
// 關閉連線
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
返回標誌;
}
/**
* 方法名稱:getFromFTP <BR>
* 說明:從FTP上讀取檔案<BR>
* 備註:<BR>
* @return 布林值<BR>
*/
公共布爾 getFromFTP () {
布爾標誌= false;
//建立FTP客戶端
FTPClient ftpClient = new FTPClient();
// 輸出流用於輸出文件
文件輸出流 fos = null;
嘗試 {
// 建立FTP連接
ftpClient.connect(this.ftpServerIP);
// 若登入成功後,才進行建立輸出流
if (ftpClient.login(this.ftpName, this.ftpPassword)) {
// FTP 檔案
String distinationFile = "/name/xxx/xxx/xxx檔案";
// 實例化輸出流
fos = new FileOutputStream("C:/ParseXML_InFTP.xml");
// 緩衝
ftpClient.setBufferSize(1024);
// 設定檔案類型(二進位類型)
如果(ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)){
ftpClient.retrieveFile(destinationFile, fos);
標誌=真;
}
}
} catch (SocketException e) {
e.printStackTrace();
標誌=假;
} catch (IOException e) {
e.printStackTrace();
標誌=假;
} catch (異常 e) {
e.printStackTrace();
標誌=假;
} 最後 {
嘗試 {
// 關閉輸出流
IOUtils.closeQuietly(fos);
// 關閉連線
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
返回標誌;
}
公共布爾創建目錄(){
布爾標誌= false;
//建立FTP客戶端
FTPClient ftpClient = new FTPClient();
嘗試 {
// 建立FTP連接
ftpClient.connect(this.ftpServerIP);
// 若登入成功後,才進行操作
if (ftpClient.login(this.ftpName, this.ftpPassword)) {
// 切換檔案路徑,到FTP上的「NNDD3」資料夾下
if (this.ftpPath != null && this.ftpPath.compareTo("") != 0
&& ftpClient.changeWorkingDirectory(this.ftpPath)) {
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
字串時間 = f.format(new Date());
String 資料夾名稱 = 時間 + "_ReTransmit";
ftpClient.makeDirectory(資料夾名稱);
標誌=真;
}
}
} catch (SocketException e) {
e.printStackTrace();
標誌=假;
} catch (IOException e) {
e.printStackTrace();
標誌=假;
} catch (異常 e) {
e.printStackTrace();
標誌=假;
} 最後 {
嘗試 {
// 關閉連接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
返回標誌;
}
公有字串[] getAllFolderNames () {
//建立FTP客戶端
FTPClient ftpClient = new FTPClient();
嘗試 {
// 建立FTP連接
ftpClient.connect(this.ftpServerIP);
// 若登入成功後,才進行操作
if (ftpClient.login(this.ftpName, this.ftpPassword)) {
// 切換檔案路徑,到FTP上的「NNDD3」資料夾下
if (this.ftpPath != null && this.ftpPath.compareTo("") != 0
&& ftpClient.changeWorkingDirectory(this.ftpPath)) {
// 將目前時間低於2天,刪除前兩天的資料包
字串時間 = minusTime();
String[] allNames = ftpClient.listNames();
String[] temp = new String[allNames.length];
// 初始化記憶體
for (int j = 0; j < allNames.length; j ++) {
溫度[j] =“”;
}
// 尋找要刪除資料夾的名稱
for (int i = 0; i < allNames.length; i ++) {
if (allNames[i].substring(0, 8).compareTo(時間) <= 0) {
暫時[i] = allNames[i];
}
}
返回溫度;
}
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} 最後 {
嘗試 {
// 關閉連接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
返回空值;
}
/**
*
* 方法名稱:minusTime <BR>
* 說明:取得錢兩天的時間,如2011-8-1的前兩天就是2011-7-30<BR>
* 備註:<BR>
* @回傳字串<BR>
*/
私有字串減時間(){
SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd");
日期 d = new Date();
String timeMinus2 = df.format(new Date(d.getTime() - 2 * 24 * 60 * 60 * 1000));
返回時間減2;
}
公共靜態無效主(字串[] args){
FTPFileTransmit ftpFileTransmit = new FTPFileTransmit();
ftpFileTransmit.deleteFoldersInFTP();
// 布林標誌 = ftpFileTransmit.createDirectory();
// 如果(標誌){
// System.out.println("***** FTP資料夾建立成功*****");
// }
// 字串資料夾名稱 = ftpFileTransmit.ftpPath + "20110809_ReTransmit/";
// 位元組[]資料 = 新位元組[1024];
// for (int i = 0; i < data.length; i ++) {
// 資料[i] = 'a';
// }
// 布林標誌 = ftpFileTransmit.saveInFTP(FolderName, "2011080912345678" ,data);
// 如果(標誌){
// System.out.println("***** FTP資料夾建立成功*****");
// }
}
}