复制番号代番号次のように:
インポート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;
プライベート文字列 ftpPassword;
プライベート文字列 ftpServerIP;
public FTPFileTransmit() {
this.ftpPath = "xxx/xxx/";
this.ftpName = "名前";
this.ftpPassword = "パス";
this.ftpServerIP = "192.168.0.xx";
}
/**
※メソッド名:saveInFTP<BR>
* 説明: FTP 上にファイルが保存されています <BR>
* 備考:<BR>
* @param フォルダー名の例「xxx/xxx/」
* @param FileName 例「ファイル名」
* @param データバイト[]数组
* @return ブール値<BR>
*/
public boolean saveInFTP (String FolderName, String FileName, byte[] data) {
ブール値フラグ = false;
// 创建FTP客户端
FTPClient ftpClient = 新しい FTPClient();
// 输入流は文章を読むために使用されます
// FileInputStream fis = null;
ByteArrayInputStream ビス = null;
試す {
// 結果FolderNameとFileName都不一致が基本要件であれば、ftp操作を実行する必要はありません
if (フォルダー名 != null
&& フォルダー名.compareTo("") != 0
&& ファイル名 != null
&& ファイル名.compareTo("") != 0) {
//FTP接続の確立
ftpClient.connect(this.ftpServerIP);
// 如果登录成功後、才进行创建输入流
if (ftpClient.login(this.ftpName, this.ftpPassword)) {
// ファイル srcClientFile = new File("C:/ParseXML.xml");
// 实例化输入流
// fis = 新しい FileInputStream(srcClientFile);
if (ftpClient.changeWorkingDirectory(フォルダー名)) {
// byte[] を入力ストリームに書き込む、例化
bis = 新しい ByteArrayInputStream(データ);
// 設置缓冲
ftpClient.setBufferSize(1024);
// 設置文件型(二进制型)
if (ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)) {
flag = ftpClient.storeFile(ファイル名, ビス);
}
}
}
}
} catch (SocketException e) {
e.printStackTrace();
フラグ = false;
} キャッチ (IOException e) {
e.printStackTrace();
フラグ = false;
} catch (例外 e) {
e.printStackTrace();
フラグ = false;
} ついに {
試す {
// 关闭输入流
IOUtils.closeQuietly(bis);
// 关闭接続
ftpClient.disconnect();
} キャッチ (IOException e) {
e.printStackTrace();
}
}
リターンフラグ;
}
/**
※メソッド名:getFromFTP<BR>
* 説明: FTP 上读取文件 <BR>
* 備考:<BR>
* @return ブール値<BR>
*/
public boolean getFromFTP () {
ブール値フラグ = false;
// 创建FTP客户端
FTPClient ftpClient = 新しい FTPClient();
// 出力ストリームは出力ファイルに使用されます
FileOutputStream 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);
// 設置文件型(二进制型)
if (ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)) {
ftpClient.retrieveFile(distinationFile, fos);
フラグ = true;
}
}
} catch (SocketException e) {
e.printStackTrace();
フラグ = false;
} キャッチ (IOException e) {
e.printStackTrace();
フラグ = false;
} catch (例外 e) {
e.printStackTrace();
フラグ = false;
} ついに {
試す {
// 关闭输出流
IOUtils.closeQuietly(fos);
// 关闭接続
ftpClient.disconnect();
} キャッチ (IOException e) {
e.printStackTrace();
}
}
リターンフラグ;
}
public boolean createDirectory() {
ブール値フラグ = false;
// 创建FTP客户端
FTPClient ftpClient = 新しい 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());
文字列フォルダー名 = 時間 + "_ReTransmit";
ftpClient.makeDirectory(フォルダー名);
フラグ = true;
}
}
} catch (SocketException e) {
e.printStackTrace();
フラグ = false;
} キャッチ (IOException e) {
e.printStackTrace();
フラグ = false;
} catch (例外 e) {
e.printStackTrace();
フラグ = false;
} ついに {
試す {
// 关闭接続
ftpClient.disconnect();
} キャッチ (IOException e) {
e.printStackTrace();
}
}
リターンフラグ;
}
public String[] getAllFolderNames () {
// 创建FTP客户端
FTPClient ftpClient = 新しい 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 日変更します。削除されるのは 2 日前のデータパケットです
文字列時間 = minusTime();
String[] allNames = ftpClient.listNames();
String[] temp = 新しい String[allNames.length];
// 初初期化数组
for (int j = 0; j < allNames.length; j ++) {
temp[j] = "";
}
// 出すべき削除ファイルの名前
for (int i = 0; i < allNames.length; i ++) {
if (allNames[i].substring(0, 8).compareTo(time) <= 0) {
temp[i] = allNames[i];
}
}
戻り温度;
}
}
} catch (SocketException e) {
e.printStackTrace();
} キャッチ (IOException e) {
e.printStackTrace();
} ついに {
試す {
// 关闭接続
ftpClient.disconnect();
} キャッチ (IOException e) {
e.printStackTrace();
}
}
null を返します。
}
/**
*
※メソッド名:minusTime<BR>
* 説明: 取钱二日間の期間、たとえば 2011 年 8 月 1 日の前の二日間は 2011 年 7 月 30 日です。<BR>
* 備考:<BR>
* @return 文字列<BR>
*/
プライベート文字列minusTime() {
SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd");
日付 d = 新しい Date();
文字列 timeMinus2 = df.format(new Date(d.getTime() - 2 * 24 * 60 * 60 * 1000));
timeMinus2 を返します。
}
public static void main(String[] args) {
FTPFileTransmit ftpFileTransmit = 新しい FTPFileTransmit();
ftpFileTransmit.deleteFoldersInFTP();
// ブール値フラグ = ftpFileTransmit.createDirectory();
// if (フラグ) {
// System.out.println("****** FTP文件夹创建成功 ******");
// }
// 文字列フォルダー名 = ftpFileTransmit.ftpPath + "20110809_ReTransmit/";
// byte[] データ = 新しい byte[1024];
// for (int i = 0; i < data.length; i ++) {
// データ[i] = 'a';
// }
// ブール値フラグ = ftpFileTransmit.saveInFTP(FolderName, "2011080912345678" ,data);
// if (フラグ) {
// System.out.println("****** FTP文件夹创建成功 ******");
// }
}
}