package com.longtop.ecommerce.service.dept; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.SocketException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import com.longtop.ecommerce.bo.Organization; /** * 从FTP读取文件 * @author tony * */ public class FtpUtils { private FTPClient ftpClient; private String fileName, strencoding; private int columns, rowCount; private String ip = "65.0.15.26"; //服务器IP地址 private String userName = "anonymous"; //用户名 private String userPwd = "anonymous"; //密码 private int port = 21; //端口号 private String path = "/aaa/CIC_Department/"; //读取文件的存放目录 /** * init ftp servere */ public FtpUtils() { this.reSet(); } public void reSet(){ //以当前系统时间拼接文件名 fileName = "t_department_"+getFileName()+".txt"; columns = 0; rowCount = 0; strencoding = "GBK"; this.connectServer(ip, port, userName, userPwd, path); } /** * 以当前系统时间生成文件名 * @return */ private String getFileName(){ SimpleDateFormat sdFormat = new SimpleDateFormat("yyyyMMdd"); String str = ""; try { str = sdFormat.format(new Date()); } catch(Exception e) { return ""; } if (str.equals("1900-01-01")) { str = ""; } return str; } /** * @param ip * @param port * @param userName * @param userPwd * @param path * @throws SocketException * @throws IOException * function:连接到服务器 */ public void connectServer(String ip , int port , String userName , String userPwd , String path){ ftpClient = new FTPClient(); try { // 连接 ftpClient.connect(ip, port); // 登录 ftpClient.login(userName, userPwd); if(path != null && path.length() > 0){ // 跳转到指定目录 ftpClient.changeWorkingDirectory(path); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * @throws IOException * function:关闭连接 */ public void closeServer(){ if(ftpClient.isConnected()){ try { ftpClient.logout(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } /** * @param path * @return * function:读取指定目录下的文件名 * @throws IOException */ public List<String> getFileList(String path){ List<String> fileLists = new ArrayList<String>(); // 获得指定目录下所有文件名 FTPFile[] ftpFiles = null; try { ftpFiles = ftpClient.listFiles(path); } catch (IOException e) { e.printStackTrace(); } for(int i = 0 ; ftpFiles != null && i < ftpFiles.length ; i++){ FTPFile file = ftpFiles[i]; if(file.isFile()){ fileLists.add(file.getName()); } } return fileLists; } /** * @param fileName * @param sourceFile * @return * @throws IOException * function:下载文件 */ public boolean unloadFile(String fileName , String sourceFile){ boolean flag = false; try{ FileOutputStream fos = new FileOutputStream(fileName); flag = ftpClient.retrieveFile(sourceFile, fos); fos.flush(); fos.close(); }catch(Exception e){ flag = false; e.printStackTrace(); } return flag; } /** * 返回一个文件流 * @param fileName * @return */ public String readFile(String fileName){ String result = ""; InputStream ins = null; try { ins = ftpClient.retrieveFileStream(fileName); // byte []b = new byte[ins.available()]; // ins.read(b); BufferedReader reader=new BufferedReader(new InputStreamReader(ins)); String inLine = reader.readLine(); while (inLine != null) { result += (inLine + System.getProperty("line.separator")); inLine = reader.readLine(); } reader.close(); if(ins != null){ ins.close(); } // 主动调用一次getReply()把接下来的226消费掉. 这样做是可以解决这个返回null问题 ftpClient.getReply(); } catch (IOException e) { e.printStackTrace(); } return result; } /** * @param fileName * @return * function:从服务器上读取指定的文件 * @throws ParseException * @throws IOException */ public List readFile() throws ParseException{ List<Organization> contentList = new ArrayList<Organization>(); InputStream ins = null; try { //从服务器上读取指定的文件 ins = ftpClient.retrieveFileStream(fileName); BufferedReader reader=new BufferedReader(new InputStreamReader(ins,strencoding)); String inLine = reader.readLine(); while (inLine != null) { if (inLine.length() + 1 > columns) columns = inLine.length() + 1; String beanStr = inLine+System.getProperty("line.separator"); if(beanStr.indexOf(",")>0){ String[] beanStrs = beanStr.split(","); Organization org = new Organization(); DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; date = format1.parse(beanStrs[0].substring(1, beanStrs[0].length()-1)); org.setBuildDate(date); String parentId = null; if((beanStrs[1].substring(1, beanStrs[1].length()-1)).equals("")){ parentId = "00";//默认值,表示顶级机构 org.setOrgLevel("00");//机构级别为00 }else parentId = (beanStrs[1].substring(1, beanStrs[1].length()-1)); org.setParentId(parentId);//去掉引号 org.setOrgCode(beanStrs[2].substring(1, beanStrs[2].length()-1)); org.setOrgBrief(beanStrs[3].substring(1, beanStrs[3].length()-1)); if(beanStrs[4].length()>3){ org.setOrgName(beanStrs[4].substring(1, beanStrs[4].length()-3)); } contentList.add(org); } inLine = reader.readLine(); rowCount++; } reader.close(); if(ins != null){ ins.close(); } // 主动调用一次getReply()把接下来的226消费掉. 这样做是可以解决这个返回null问题 ftpClient.getReply(); System.out.println("此次任务一共读取["+contentList.size()+"]条数据记录"); } catch (IOException e) { e.printStackTrace(); } return contentList; } /** * @param fileName * function:删除文件 */ public void deleteFile(String fileName){ try { ftpClient.deleteFile(fileName); } catch (IOException e) { e.printStackTrace(); } } /** * @param args * @throws ParseException */ public static void main(String[] args) throws ParseException { FtpUtils ftp = new FtpUtils(); ftp.readFile(); /*ftp.unloadFile("D:\\test_t_department.txt", "t_department_20110623.txt"); List<String> files = ftp.getFileList(path); for(int i = 0 ; i < files.size() ; i++){ String fileName = files.get(i); ftp.unloadFile("D:\\test", "t_department_20110623.txt"); System.out.println(fileName); String result = ftp.readFile("t_department_20110623.txt"); System.out.println(result); ftp.deleteFile(fileName); }*/ }
声明:该文转载自:http://www.myexception.cn/web/737298.html,感谢共享者!!
相关推荐
为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行读取大文件,并将其内容解析后存储到数据库中。本文将详细讲解这一过程。 首先,我们需要了解`java.nio`包...
Java解析FTP服务器文本文件...4. 文件解析:对文件进行解析,获取文件编码格式,然后对文件进行解码。 5. jar包引入:需要引入相关的jar包,例如cpdetector.jar、jchardet-1.0.jar、antlr.jar、commons-net-3.3.jar等。
在Java编程环境中,读取FTP(File Transfer Protocol)服务器上的文件是一项常见的任务,尤其是在Web服务器和Linux系统环境下。FTP提供了一种可靠的方式来传输文件,使得应用程序可以远程访问和操作存储在FTP服务器...
通过本文介绍的方法,您可以轻松实现Java应用程序中对FTP服务器的文件上传与下载操作,并能有效地指定文件上传和下载的目标目录。这对于企业级应用中的文件管理有着重要的作用。同时,在实际应用过程中还需注意安全...
2. CSV文件解析: CSV(Comma Separated Values)文件是一种常见的数据交换格式,通常用于导入和导出表格数据。Java中,可以使用OpenCSV或者Apache Commons CSV库来解析CSV文件。解析过程通常包括打开文件、创建...
下面将详细介绍如何使用Java进行GRIB2文件的读取和解析。 1. **理解GRIB2文件结构**: GRIB2文件由多个消息组成,每个消息包含一组相关的气象数据。消息由一个固定长度的头部(Header)和可变长度的数据部分(Data...
在JAVA中解析DBC文件,首先需要读取文件内容,然后按照DBC的语法规则进行解析。这通常涉及到字符串分割、正则表达式匹配等操作。解析过程中要注意处理大小端问题,因为在不同的硬件平台上,数据存储的顺序可能不同。...
【标签】:“java解析DWG文件json java读取dwg文件” 本文将详细介绍如何使用Java和SuperMap iObjects Java库解析DWG文件并将其转换为JSON格式。SuperMap iObjects Java是一款强大的GIS(地理信息系统)开发工具,...
在Java编程环境中,解析Shapefile(.shp)文件是一项常见的任务,特别是在地理信息系统(GIS)应用中。Shapefile是一种广泛用于存储地理空间数据的开放格式。为了在Java中处理这些文件,我们可以利用开源库GeoTools...
6. **文件I/O操作**:Java的`java.io`和`java.nio`包提供了读写文件的功能。在将CHM内容转换为HTML时,需要将生成的HTML文件写入磁盘。 7. **异常处理**:处理可能出现的错误和异常是任何程序设计的重要部分。在...
然后,将ZIP文件内容解析到内表,我们可以遍历`lt_files_info`,读取每个文件的内容,并将其转换为字符格式存储到内表中。例如: ```abap LOOP AT lt_files_info INTO DATA(ls_file_info). DATA(lv_file_content) ...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
以上就是Java中读取目录下指定文件的基本方法。通过灵活运用`File`类及其相关方法,可以实现各种复杂的文件操作需求。在实际开发中,根据具体场景选择合适的方法,并确保处理异常,以保证程序的健壮性。
在Java编程中,读取本地SQLite数据库(.db文件)是一项常见的任务,特别是在移动应用开发或者需要离线存储数据的场景下。SQLite是一种轻量级的、开源的关系型数据库,它不需要单独的服务器进程,可以直接在应用程序...
shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形...该方法通过java代码实现将shp文件的数据读取以及存入数据库
本文详细介绍了Java实现解析dcm医学影像文件并提取文件信息的方法,包括安装dcm4che库、测试类实现、dcm文件解析、文件信息提取等步骤。该方法可以帮助开发者快速实现dcm文件的解析和信息提取,提高医疗信息化系统的...
Java 读取 XPS 文件是将 XML Paper Specification (XPS) 文件内容提取并处理到 Java 应用程序中的过程。XPS 是一种基于 XML 的文件格式,主要用于创建、查看和打印文档,它与 PDF 类似,但主要在微软环境中使用。在 ...
Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...
// 创建一个MPPReader对象,指定要读取的MPP文件路径 MPPReader reader = new MPPReader(new File("path_to_your_mpp_file.mpp")); // 读取文件版本信息 FileVersion fileVersion = reader.getFileVersion(); ...