复制代码代码如下:
导入 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文件夹创建成功*****");
// }
}
}