ftp工具类

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.mail.Message.RecipientType;



import javax.mail.MessagingException;

import com.yufuSendMailToMrch.utils.DateUtil;
import com.yufuSendMailToMrch.utils.Mail;

import sun.net.ftp.FtpClient;
import sun.net.ftp.FtpDirEntry;
import sun.net.ftp.FtpDirEntry.Type;
import sun.net.ftp.FtpProtocolException;

/**
 * FTP工具类
 * 
 * */
public class FTPUtils {

    public static boolean createDir(String destDirName) {  
        File dir = new File(destDirName);  
        if (dir.exists()) {  
            System.out.println("创建目录" + destDirName + "失败,目标目录已经存在");  
            return false;  
        }  
        if (!destDirName.endsWith(File.separator)) {  
            destDirName = destDirName + File.separator;  
        }  
        //创建目录  
        if (dir.mkdirs()) {  
            System.out.println("创建目录 " + destDirName + " 成功!");  
            return true;  
        } else {  
            System.out.println("创建目录 " + destDirName + " 失败!");  
            return false;  
        }  
    } 
	
	public static void main(String[] args) {
		try {
			FtpClient ftp = connectFTP("192.168.10.75", 21, "ftpweb", "ftpweb");
			String day=DateUtil.getDate("yyyyMMdd");
			String localRoute="D://";
			String todayPdfFileRoute="/home/ftpweb/fssystem_pdf/"+day+"/";
			Iterator<FtpDirEntry> ftpFiles=ftp.listFiles(todayPdfFileRoute);
			String receiveMail="";
			String pdfRoute="";
			//本地创建当天目录
			createDir(localRoute+day);
			
			while (ftpFiles.hasNext()) {  //跳转到当天目录,读取商户目录
				FtpDirEntry fe=ftpFiles.next();
				List<File> pdfFiles=new ArrayList<File>();
				String name=fe.getName();
				if(name.contains("#")){
					receiveMail=name.split("#")[1];
					System.out.println("发送到邮箱:"+receiveMail);
				}
				System.out.println("当天目录:"+name+"   type:"+fe.getType());
				if(Type.DIR.equals(fe.getType())){//进入pdf文件夹目录,读取pdf
					Iterator<FtpDirEntry> mrchPdf=ftp.listFiles(todayPdfFileRoute+name);
					//本地创建当天商户目录
					createDir(localRoute+day+"/"+name);
					while (mrchPdf.hasNext()) {
						FtpDirEntry pdf=mrchPdf.next();
						if(Type.FILE.equals(pdf.getType())){
							System.out.println("pdf文件夹目录:"+todayPdfFileRoute+name+"/"+pdf.getName()+"   type:"+pdf.getType());
							pdfRoute=todayPdfFileRoute+name+"/"+pdf.getName();
							//下载ftp服务器pdf文件到本地
							FTPUtils.download(localRoute+day+"/"+name+"/"+pdf.getName(), pdfRoute,ftp);
							pdfFiles.add(new File(localRoute+day+"/"+name+"/"+pdf.getName()));
						}
					}
				}
				//给商户发送邮件
				if(pdfFiles!=null&&pdfFiles.size()>0&&emailFormat(receiveMail)){
					String[] receive = {receiveMail}; 	//接收方邮箱
					Mail mail = new Mail("*******@163.com","**********",receive,RecipientType.TO, "交易流水("+DateUtil.getDate("yyyy-MM-dd HH:mm:ss")+")", "详情请查件附件!谢谢。",pdfFiles);
					mail.send();
				}
				System.out.println("****************************");
			}
			ftp.close();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (FtpProtocolException e) {
			e.printStackTrace(); 
		 } catch (MessagingException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 验证输入的邮箱格式是否符合
	 * 
	 * @param email
	 * @return 是否合法
	 */
	public static boolean emailFormat(String email) {
		boolean tag = true;
		if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) {
			tag = false;
		}
		return tag;
	}
	
	
	/**
	 * 获取FTP
	 * 
	 * @param url
	 * @param port
	 * @param username
	 * @param password
	 * @return
	 */
	public static FtpClient connectFTP(String url, int port, String username,
			String password) {
		// 创建ftp
		FtpClient ftp = null;
		try {
			// 创建地址
			SocketAddress addr = new InetSocketAddress(url, port);
			// 连接
			ftp = FtpClient.create();
			ftp.connect(addr);
			// 登陆
			ftp.login(username, password.toCharArray());
			ftp.setBinaryType();
		} catch (FtpProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return ftp;
	}

	/**
	 * 上传本地文件到ftp服务器
	 * 
	 * @param localFile
	 *            本地文件目录,如:d://1.txt
	 * @param ftpFile
	 *            ftp服务器文件目录,如:/home/ftpweb/fssystem_pdf/1.txt
	 * @param ftp
	 */
	public static void upload(String localFile, String ftpFile, FtpClient ftp) {
		OutputStream os = null;
		FileInputStream fis = null;
		try {
			// 将ftp文件加入输出流中。输出到ftp上
			os = ftp.putFileStream(ftpFile);
			File file = new File(localFile);

			// 创建一个缓冲区
			fis = new FileInputStream(file);
			byte[] bytes = new byte[1024];
			int c;
			while ((c = fis.read(bytes)) != -1) {
				os.write(bytes, 0, c);
			}
			System.out.println("upload success!!");
		} catch (FtpProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (os != null) {
					os.close();
				}
				if (fis != null) {
					fis.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 从ftp服务器下载文件到本地
	 * 
	 * @param localFile
	 * @param ftpFile
	 * @param ftp
	 */
	public static void download(String localFile, String ftpFile, FtpClient ftp) {
		InputStream is = null;
		FileOutputStream fos = null;
		try {
			// 获取ftp上的文件
			is = ftp.getFileStream(ftpFile);
			File file = new File(localFile);
			byte[] bytes = new byte[1024];
			int i;
			fos = new FileOutputStream(file);
			while ((i = is.read(bytes)) != -1) {
				fos.write(bytes, 0, i);
			}
			System.out.println("download success!!");

		} catch (FtpProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (fos != null) {
					fos.close();
				}
				if (is != null) {
					is.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

辉煌互联FTPserver这是一款免费的其特点是易于使用、绿色的(无需安装,只有一个文件)、小巧的的FTP服务器软件。整个FTP服务器就是一个EXE可执行程序,无需任何安装,不修改注册表,删除时直接删除所有相关文件就行了。程序放在任何目录均可运行。可以轻松地将它放在U盘里,邮箱里,网盘里,或者网站上随时下载,这样,就有了一个可以随身携带的FTP服务器软件。。这是一个小巧灵活的FTP服务器工具,占用系统资源少。可快速建立小型的FTP服务器,可以方便应用局域网内用户互相传送文件,不用再为如何另外安装FTP服务器上浪费脑筋。 功能说明: 1、建立便捷FTP服务器。 2、用于局域网,互相点对点传送文件。 3、建立临时FTP服务器,供大家临时下载文件等。 4、提供文件(文件夹)的下载、上传、删除、改名功能。 5、支持多用户访问,可以设置最大连接用户。 6、支持账户/密码访问和权限控制,同样支持匿名访问。 7、配置信息自动保存,下次不用重新输入,用户名清空自动恢复匿名访问。 8、最小化至托盘图标,不占用桌面空间。 9、能设置随系统开机启动。 程序设置: 启动软件后,需要作一些设置: 1. 设置FTP服务器的根目录。以后所有的请求都会以此FTP根目录为基础查找文件。 2. 设置FTP服务器的登录帐号,如果不设置即为允许匿名登录FTP服务器。 3. 设置FTP服务器端口,默认为 21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值