`

java 读FTP 文件

    博客分类:
  • java
阅读更多
package com.tzx.common.util.ftpscan;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

import com.tzx.bo.iface.erp.filescan.BalanceRecordService;
import com.tzx.common.util.SpringDAOUtil;
import com.tzx.po.impl.hbn.pojo.erp.ftpscan.ErpBalanceRecord;

public class FTPListAllFiles {
	private static Log log=LogFactory.getLog(FTPListAllFiles.class);
	private BalanceRecordService balanceRecordService;
	public FTPClient ftp;

	public FTPListAllFiles() {
		super();
	}

	public FTPListAllFiles(boolean isPrintCommmand) {
		ftp = new FTPClient();
	}

	// 登录
	public boolean login(String host, int port, String username, String password)
			throws IOException {
		this.ftp.connect(host, port);
		if (FTPReply.isPositiveCompletion(this.ftp.getReplyCode())) {
			if (this.ftp.login(username, password)) {
				this.ftp.setControlEncoding("GBK");
				return true;
			}
		}
		if (this.ftp.isConnected()) {
			this.ftp.disconnect();
		}
		return false;
	}

	// 关闭连接
	public void disConnection() throws IOException {
		if (this.ftp.isConnected()) {
			this.ftp.disconnect();
		}
	}

	// 通过路径获得路径下所有文件 输出文件名
	public void List(String pathName) throws IOException {
		if (pathName.startsWith("/") && pathName.endsWith("/")) {
			String directory = pathName;
			this.ftp.changeWorkingDirectory(directory);
			SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd*");
			String dateStr = formatter.format(new Date());
			FTPFile[] files = this.ftp.listFiles(dateStr);
			InputStream is = null;
			BufferedReader reader = null;
			List<ErpBalanceRecord> ebrlist = new LinkedList<ErpBalanceRecord>();
			for (int i = 0; i < files.length; i++) {
				if (files[i].isFile()) {
					is = ftp.retrieveFileStream(files[i].getName());
					if (is != null) {
						int index = 0;
						String line;
						reader = new BufferedReader(new InputStreamReader(is));
						String shh = null;
						String shmc = null;
						while ((line = reader.readLine()) != null) {
							if (0 != index && 2 != index) {
								String[] strTotal = null;
								if (1 == index) {
									strTotal = line.split("\\|");
									shh = strTotal[1];
									shmc = strTotal[2];
								} else {
									String[] strEbr = line.split("\\|");
									ErpBalanceRecord ebr = new ErpBalanceRecord();
									ebr.setDdbh(strEbr[0]);
									ebr.setJyrq(strEbr[1]);
									ebr.setJyje(Double.valueOf(strEbr[2]
											.replace(",", "")));
									ebr.setJysxf(Double.valueOf(strEbr[3]
											.replace(",", "")));
									ebr.setSbje(Double.valueOf(strEbr[4]
											.replace(",", "")));
									ebr.setZdbh(strEbr[5]);
									ebr.setShh(shh);
									ebr.setShmc(shmc);
									ebr.setJylx("银行卡");
									ebrlist.add(ebr);
								}

							}
							index++;
						}
					}
					reader.close();
					if (is != null) {
						is.close();
					}

					if (!ftp.completePendingCommand()) {
						ftp.logout();
					}
				}
			}
			try {
				balanceRecordService = (BalanceRecordService) SpringDAOUtil
						.getBean("balanceRecordService");
				if (ebrlist.size() > 0) {
					balanceRecordService.batchSaveBalanceRecord(ebrlist);
					log.info("成功插入 "+ebrlist.size()+" 条记录");
				} else {
					log.info("无数据");
				}
			} catch (Exception e) {
				log.error("批处理执行出错");
				e.printStackTrace();
			}
		}
	}

	public static void ftpService() throws IOException {
		FTPListAllFiles f = new FTPListAllFiles(true);
		// 地址,端口号,用户名,密码
		if (f.login("ftp.haidilao.net", 21, "ylgl", "hdlasd123")) {
			f.List("/"); 
		}
		f.disConnection();
	}

	public static void main(String[] args) throws IOException {
		FTPListAllFiles.ftpService();

	}

	public void setBalanceRecordService(
			BalanceRecordService balanceRecordService) {
		this.balanceRecordService = balanceRecordService;
	}

}

分享到:
评论

相关推荐

    java 读取Ftp指定位置的文件解析并入库

    标题 "java 读取Ftp指定位置的文件解析并入库" 涉及到的是使用Java编程语言通过FTP(File Transfer Protocol)协议从远程服务器上下载文件,然后对下载的文件进行解析,并将解析得到的数据存储到数据库中。...

    java 导出csv文件并上传sftp

    CSV文件以其简洁、易读的特性,使得它们成为跨平台传输数据的理想选择。本篇文章将深入探讨如何使用univocity-parsers库来创建CSV文件,以及如何利用JSCH库将生成的CSV文件上传到SFTP(Secure File Transfer ...

    java opencv 调用摄像头实现拍照及本地保存 支持上传FTP 路径配置

    在Java中,`java.net.Socket`和`java.io`包提供了基础的FTP客户端功能,但更常见的是使用第三方库如Apache Commons Net,它提供了更高级的FTP客户端API,便于设置登录信息、上传文件、管理目录等。 6. **路径配置**...

    FTP服务器流解析xml文件

    FTP服务器流解析XML文件是IT领域中一项常见的任务,它涉及到网络传输、文件管理以及数据解析等多个技术点。本文将详细探讨这些知识点,帮助你理解如何在FTP服务器上处理XML文件。 首先,FTP(File Transfer ...

    JAVA开发的FTP

    FTP,全称File Transfer Protocol,文件传输协议,是互联网上最古老、最广泛的服务之一,主要用于在不同计算机之间交换文件。FTP基于TCP/IP协议族,分为控制连接和数据连接两部分,允许用户远程登录到FTP服务器,...

    FTP用户文件

    在使用FTP过程中,用户还需要注意文件权限和目录结构,因为FTP允许设置对文件和目录的读、写和执行权限。理解这些权限对于确保文件的安全性和共享的控制至关重要。同时,了解FTP的日志记录和活动监控也是管理FTP...

    Java中使用Jacob实现Windows下语音合成并生成音频文件示例代码.rar

    4. **语音合成(Text-to-Speech, TTS)**:在Java中,我们可以通过Jacob调用`SpVoice.Speak()`方法,传入需要合成的文本字符串,让系统语音引擎将其读出来。还可以设置一些参数,如语速、音调等,以定制合成效果。 ...

    java源码包---java 源码 大量 实例

    ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地...

    用JAVA实现缓冲多线程无阻塞读取远程文件.doc

    在Java编程中,实现多线程无阻塞读取远程文件是一种提高程序效率的重要技术。在上述文档中,作者提出了一个使用环形缓冲区和多线程来优化远程文件读取的方案。以下是对这个方案的详细解释: 首先,环形缓冲区(Ring...

    java源码包3

    ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地...

    java源码包2

    ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地...

    高手使用Java NIO编写高性能的服务器

    Java NIO(New IO)是Java 1.4版本引入的一个新特性,它为Java程序提供了非阻塞I/O操作的能力,极大地提升了Java在处理网络通信和文件读写时的性能。NIO与传统的IO( Blocking IO)模型相比,最大的区别在于其非阻塞...

    java实现两台服务器间文件复制的方法

    客户端读取输入流中的数据,并将其写入到本地文件,直到没有更多数据可读。最后,关闭所有相关的输入/输出流和套接字。 值得注意的是,这个示例没有处理异常,实际应用中需要添加适当的错误处理代码,以确保程序的...

    文件操作及所需jar

    此外,文件操作也可能涉及网络文件系统(NFS)、FTP、SFTP等远程文件系统,这时需要相应的协议库支持。 总的来说,文件操作是Java编程中的基本技能,理解并熟练掌握相关API和概念对于任何Java开发者来说都至关重要...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

    Linux中FTP账号无法删除文件夹的解决方案

    在Linux中,文件和目录的权限由r(读)、w(写)和x(执行)这三个权限位组成,分别对应所有者、用户组和其他用户的权限。如果权限设置为777,理论上应该允许所有操作,包括删除。然而,这里的问题并不在于权限,...

    FTP服务器开发测试工具

    4. **权限验证**: 验证不同用户对文件和目录的读、写、执行权限是否按预期设置。 5. **异常处理**: 检测服务器在遇到错误时的处理方式,如网络中断、文件冲突等。 "FtpServer-master"可能是一个FTP服务器的源代码...

    java web FTPClient实现上传文件到指定服务器

    本篇文章将详细介绍如何使用Java web FTPClient实现上传文件到指定服务器,提供了一个完整的示例代码,包括连接FTP服务器、登录、创建路径、上传文件和断开连接等步骤。 首先,需要引入相关的jar包,包括commons-...

Global site tag (gtag.js) - Google Analytics