`

java从FTP获取文件,解压缩,读取文件,拷贝文件,删除文件等一系列功能

阅读更多
//往ftp上上传文件
public static void upFile(String server,String username,String password,String ftpurls,String localurls) {
String ftpurl=ftpurls.substring(0,ftpurls.lastIndexOf("/")+1);//截取出ftp上的路径
String filename=ftpurls.substring(ftpurls.lastIndexOf("/")+1);//截取出文件名
String localurl=localurls+"/"+filename;//再拼凑出本地路径
try {
FtpClient ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(username, password);
if (ftpurl.length() != 0){
ftpClient.cd(ftpurl);
}
ftpClient.binary();
TelnetOutputStream os = ftpClient.put(filename);
File file_in = new File(localurl);
FileInputStream is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
is.close();
os.close();
ftpClient.closeServer();

}catch(Exception e){}
}

//从ftp上下载文件
public void downLoadFile(String server,String username,String password,String ftpurls,String localurls) {

String ftpurl=ftpurls.substring(0,ftpurls.lastIndexOf("/")+1);//截取出ftp上的路径
String filename=ftpurls.substring(ftpurls.lastIndexOf("/")+1);//截取出文件名
String localurl=localurls+filename;//再拼凑出本地路径
try {
FtpClient ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(username, password);
if (ftpurl.length() != 0){
ftpClient.cd(ftpurl);
}
ftpClient.binary();
TelnetInputStream is = ftpClient.get(filename);
////cs_vip_card.txt.Z 不是file
File file_out = new File(localurl);
file_out.createNewFile();

FileOutputStream os = new FileOutputStream(file_out);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
is.close();
os.close();
ftpClient.closeServer();
} catch (Exception ex) {
LOG.ADMININFO("downLoadFile从FTP获取文件失败:"+ex.getMessage());
ex.printStackTrace();
//JOptionPane.showMessageDialog(null,"很报谦!ftp连接失败,所需文件暂时不能下载!!");
}

}


/**
* 拷贝文件到目标目录并删除源文件
* @param srcFilePath   d:/abc/mytest.txt
* @param destDirPath   d:/abc_bak/
*/
public void copyfileAndDel(String srcFilePath,String destDirPath){
try{
File file = new File(srcFilePath);
String fileName = file.getName();
String destFileName = destDirPath + File.separator+ fileName+"."+System.currentTimeMillis();
LOG.ADMININFO("copyfileAndDel#############destFileName:"+destFileName+"##################|destDirPath:"+destDirPath+"|File.separator:"+File.separator+"|fileName:"+fileName);
tocopyFile(srcFilePath, destFileName);
//删除源文件
  this.deleteFile(srcFilePath);
}catch(Exception e){
System.out.println("没有这个文件");
return;
}
}
/**
    * 删除指定的文件
    * @param filePath
    */
public void deleteFile(String filePath){
   File file = new File(filePath);
   boolean flag = file.delete();
   System.out.println("删除文件:"+filePath);
}
public void tocopyFile(String srcFilePath, String desFilePath){
        int byteread = 0;
        InputStream in = null;
        FileOutputStream out = null;
        try{
            in = new FileInputStream(srcFilePath);
            out = new FileOutputStream(desFilePath);
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }
        byte[] buffer = new byte[1024];
        try{
            while((byteread = in.read(buffer)) != -1){
                out.write(buffer, 0, byteread);
            }
            in.close();
            out.close();
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
/** 定时执行的
* 从FTP下载文件
* @param args
*/
public void getFileFromFTP(String ... args) throws AppException{
Properties p = getProperties();
String ftpIDSIP = p.getProperty("ftpIDSIP");
String ftpUsername = p.getProperty("ftpUsername");
String ftpPassword = p.getProperty("ftpPassword");
String ftpPath = p.getProperty("ftpPath");
String localPath = p.getProperty("localPath");
String localPathbak = p.getProperty("localPathbak");
//拼接一个ftp中文件的路径  /date/20120815/cs_vip_card.txt
String date = "";
if(args != null && args.length == 1){
date = CommonFunction.getPrevDay(args[0], 1);
}else if(args != null && args.length == 2){
date = CommonFunction.getPrevDay(args[0], Integer.parseInt(args[1]));
}else{
date = CommonFunction.getPrevDay(CommonFunction.getLocalDate(), 1);
}
ftpPath = ftpPath +"/"+date +"/cs_vip_card.txt.Z";
//String localurl=localurls+filename;//再拼凑出本地路径
try {
downLoadFile(ftpIDSIP,ftpUsername,ftpPassword,ftpPath,localPath);
LOG.ADMININFO("downLoadFile下载文件完成########################"+CommonFunction.getLocalTime14());
} catch (Exception e) {
LOG.ADMININFO("downLoadFile下载文件错误:"+CommonFunction.getLocalTime14());
e.printStackTrace();
}
try {
upzipFile(localPath);
LOG.ADMININFO("upzipFile解压缩完成########################"+CommonFunction.getLocalTime14());
} catch (Exception e) {
LOG.ADMININFO("upzipFile解压缩文件错误:"+CommonFunction.getLocalTime14());
e.printStackTrace();
}
try {
localPath = localPath+"/cs_vip_card.txt";
GetInfo(localPath);
LOG.ADMININFO("GetInfo获取文件数据并保存到AMSVIPINFO表完成########################"+CommonFunction.getLocalTime14());
} catch (Exception e) {
LOG.ADMININFO("GetInfo获取文件数据并保存到AMSVIPINFO表信息错误:"+CommonFunction.getLocalTime14());
e.printStackTrace();
}
try {
copyfileAndDel(localPath, localPathbak);
LOG.ADMININFO("copyfileAndDel复制文件到备份目录并且删除本地源文件完成#################################"+CommonFunction.getLocalTime14());
} catch (Exception e) {
LOG.ADMININFO("copyfileAndDel复制文件到备份目录并且删除本地源文件信息错误:"+CommonFunction.getLocalTime14());
e.printStackTrace();
}
}
/****************/
//localPath=/cpic/bqgpspad/java/domains/
public void upzipFile(String localPath) throws Exception{
String command = "uncompress "+localPath+"cs_vip_card.txt.Z";
Process process = Runtime.getRuntime().exec(command);
InputStream is = process.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String buff = "";
StringBuffer sb = new StringBuffer();
while((buff =in.readLine())!=null){
sb.append(buff);
sb.append("\n");
}
}



/*****读取文件***********************/
private String GetTxtCode(String path){ // 获取text文件编码
String code = "";
code = "gb2312";
try {
InputStream is = new FileInputStream(path);
byte[] head = new byte[3];
try {
is.read(head);
if (head[0] == -1 && head[1] == -2)
code = "UTF-16";
if (head[0] == -2 && head[1] == -1)
code = "Unicode";
if (head[0] == -17 && head[1] == -69 && head[2] == -65)
code = "UTF-8";
} catch (IOException e) {
e.printStackTrace();
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}
return code;
}
public int GetLines(String fileName) throws IOException {// 获取文件行数以便建立数组维度

FileReader in = new FileReader(fileName);
LineNumberReader reader = new LineNumberReader(in);
String strLine = reader.readLine();
int totalLines = 0;
while (strLine != null) {
totalLines++;
strLine = reader.readLine();
}
reader.close();
in.close();
return totalLines;
}

// /然后读取文件信息,这里读取的文件每行四个信息块,以制表符为分隔符:

public void GetInfo(String path) throws IOException,FileNotFoundException {
int Lines = this.GetLines(path);
System.out.println("Txt File Lines:" + Lines);
String[][] s = new String[Lines][4];
File f = new File(path);
String code = GetTxtCode(path);
System.out.println("Txt File Code:" + code);
if (f.isFile() && f.exists()) {
InputStreamReader sr = new InputStreamReader(new FileInputStream(f), code);
BufferedReader bf = new BufferedReader(sr);
String line;
int i = 0;
String saveOrUpdateFlag = "save";
while ((line = bf.readLine()) != null) {//遍历文件的每一行
String[] lineDataArray = line.split("\\|");//将每行以|分割
String vipidcard = lineDataArray[2];
String cardlevel = lineDataArray[3];//卡等级A=金卡,B=银卡,D=无效卡
String vipname = lineDataArray[8];
String vipType = "2";//急难救助
String idType = "0";//0=身份证
String vipRemark = lineDataArray[8];//补充说明
String isactive = "1";//有效
String oprId = "sys";
String brhId = "00000000000000";//从急难救助同步的VIP
try{
Amsvipinfo amsvipinfo = findInVIPByCard(vipidcard,brhId);
if(amsvipinfo == null){
saveOrUpdateFlag = "save";
saveToAmsVIPInfo(brhId,oprId, vipname, vipidcard, cardlevel, vipType, idType, vipRemark, isactive);
}else{
saveOrUpdateFlag = "update";
updateToAmsVIPInfo(brhId,oprId, vipname, vipidcard, cardlevel, vipType, idType, vipRemark, isactive);
}
}catch(Exception e){
LOG.ADMININFO("急难救助-"+saveOrUpdateFlag+"-文件第"+(i+1)+"行发生错误:"+line.toString());
e.printStackTrace();
}
i++;
}
}
}
分享到:
评论

相关推荐

    java 读取FTP服务器文件

    在Java编程环境中,读取FTP(File Transfer Protocol)服务器上的文件是一项常见的任务,尤其是在Web服务器和Linux系统环境下。FTP提供了一种可靠的方式来传输文件,使得应用程序可以远程访问和操作存储在FTP服务器...

    JAVA获取FTP文件列表

    本文档将详细介绍一个基于Java的实用工具类`FtpClientUtil`,该类提供了一系列功能来与FTP服务器交互,包括连接到服务器、上传文件、下载文件、获取文件列表、删除文件和目录以及关闭连接等操作。 #### 二、`...

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

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

    Java解析FTP服务器文本文件

    Java解析FTP服务器文本文件是指使用Java语言连接FTP服务器,上传、下载、递归目录遍历等基本操作的集合。在这个过程中,我们需要引入相关的jar包,例如cpdetector.jar、jchardet-1.0.jar、antlr.jar、commons-...

    java定时从ftp服务器更新相关文件

    Java定时从FTP服务器更新相关文件是一项常见的任务,特别是在自动化数据同步和备份的场景中。这里主要涉及的技术点包括FTP协议、Java编程以及文件系统操作。本文将深入探讨这些知识点,并提供一个基于`ftp4j`库的...

    获取ftp服务器文件的大小

    本文将围绕“获取FTP服务器文件的大小”这一主题展开,深入探讨如何通过编程手段实现这一功能,并对所提供的代码片段进行详细的解释与分析。 #### FTP协议简介 FTP(File Transfer Protocol)即文件传输协议,是一...

    java ftp上传 下载 文件压缩解压

    这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...

    java实现Ftp批量下载文件及解压

    在Java编程环境中,FTP(File Transfer Protocol)是一个用于在计算机之间传输文件的标准协议。通过Java实现FTP批量下载文件以及解压的功能,可以极大地提高工作效率,特别是在处理大量数据时。以下是一份详细的步骤...

    JavaFtp实例,实现文件下载和读取

    总之,Java FTP功能为我们提供了一种可靠的方式来与FTP服务器交互,无论是下载文件还是读取内容,都是业务系统中常见且实用的功能。通过学习和实践,你可以熟练掌握这些技巧,以便在实际项目中应用。

    FTP中获取文件大小

    总结来说,Java的FTPClient类为我们提供了一种强大且方便的方式来与FTP服务器交互,包括获取文件大小、文件夹属性,以及执行各种FTP命令。了解并熟练运用这些功能,可以极大地提高我们在开发过程中处理文件传输的...

    Java 实现对比ftp文件和本地文件的修改时间 更新本地文件

    Java 实现对比ftp文件和本地文件的修改时间 ftp服务器文件比本地文件新时 把服务器文件下载覆盖本地文件 更新本地文件

    java实现ftp自动上传文件

    Java 实现 FTP 自动上传文件是一项常见的任务,尤其在自动化部署、数据同步或者日志传输等场景中。本文将深入探讨如何使用Java编程语言来构建一个FTP文件上传系统,同时结合Log4j日志框架和命令行信息的处理。 首先...

    使用Java向服务器上传文件压缩包并实现解压缩

    JSch是一个纯Java实现的SSH2库,它允许用户连接到SFTP服务器,进行文件传输、创建目录、删除文件等操作。首先,我们需要在项目中引入JSch库,然后创建一个`Session`对象,设置用户名、密码或密钥对,并连接到SFTP...

    java获取ftp文件列表并判断文件是否存在.txt

    通过java代码来实现获取ftp服务器指定目录下的文件列表。

    Java FTP 指定下载文件和上传文件到指定的服务器目录

    在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定的服务器目录下。此方法已经过测试验证,能够满足基本的需求,并且代码易于...

    JAVA处理FTP上的文件

    本教程将详细介绍如何使用Java处理FTP上的文件,包括下载、解压、备份、读写CSV文件以及压缩文件等操作。 首先,要进行FTP操作,我们需要一个Java库,如Apache Commons Net。该库提供了一个方便的API来实现FTP...

    java 连接 FTP 文件操作(上传,下载,删除,复制

    本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 首先,Java通过`java.net`和`javax.net`包提供了FTP客户端的功能。主要依赖于`java.net....

    Java实现FTP文件上传和下载

    在Java编程语言中,FTP(File Transfer Protocol)文件上传和下载是常见的网络操作,用于在本地计算机和远程服务器之间交换文件。以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。...

    Java实现FTP批量大文件上传下载

    让我们设想这样一个情形--我们想写一个纯 Java 的从一个远程计算机上运行的 FTP 服务器上传下载文件的应用程序;我们还希望能够得到那些供下载的远程文件的基本文件信息,如文件名、数据或者文件大小等。尽管从头...

    FTP JAVA工具类(连接FTP,上传文件到FTP,删除FTP文件,下载FTP文件,检索FTP文件)

    本篇文章将详细讲解如何使用Java编写一个FTP工具类,实现连接FTP服务器、上传文件、删除文件、下载文件以及检索文件的功能。 首先,我们需要引入Apache Commons Net库,该库提供了丰富的FTP客户端API。在`pom.xml`...

Global site tag (gtag.js) - Google Analytics