`
panshaobinSB
  • 浏览: 203030 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ftp下载与上传

 
阅读更多
package cn.eshore.bnet.baobiaotask.service;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
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 cn.eshore.bnet.baobiaotask.entity.BaoBiaoProperties;

/**
 * FTP TOOLS (must import commons-net-1.4.1.jar or newer jar) <dependency>
 * <groupId>commons-net</groupId> <artifactId>commons-net</artifactId>
 * <version>1.4.1</version> </dependency>
 * 
 * @author wuxi
 * 
 */
public class FtpUtil {
	private static final Log log = LogFactory.getLog(FtpUtil.class);
	// FTP server parameter
	public static String IP;
	public static String ACCOUNT;
	public static String PASSWORD;
	public static String REMOTE_LOG_DIR;
	public static final int BUFFER_SIZE = 2048;

	// constant parameter,do not change them.
	public static final int ASCII_FILE_TYPE = 0;
	public static final int BINARY_FILE_TYPE = 2;
	public static final String GBK_ENCODING = "GBK";
	public static final String UTF8_ENCODING = "UTF-8";

	static {
		IP = "192.18.96.73";
		ACCOUNT = "";
		PASSWORD = "";
		REMOTE_LOG_DIR = "/panshao";
			}

	/**
	 * FTP upload single file
	 */
	public static int uploadFile(File file, String fileName) {
		return uploadFile(IP, ACCOUNT, PASSWORD, file, REMOTE_LOG_DIR,
				GBK_ENCODING, BINARY_FILE_TYPE, fileName);
	}

	public static int uploadFile(String ip, String account, String password,
			File file, String remoteDir, String encoding, int fileType,
			String fileName) {
		FTPClient ftpClient = new FTPClient();
		FileInputStream fis = null;

		try {
			ftpClient.connect(ip);
			ftpClient.login(account, password);

			fis = new FileInputStream(file);
			ftpClient.changeWorkingDirectory(remoteDir);
			ftpClient.setBufferSize(BUFFER_SIZE);
			ftpClient.setControlEncoding(encoding);
			ftpClient.setFileType(fileType);
			ftpClient.storeFile(fileName, fis);
			log.info("Upload " + fileName + " to " + IP + "/" + remoteDir);
			return 0;
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("FTP client make a mistake!", e);
		} finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("Close FTP connection error!", e);
			}
		}
	}

	/**
	 * FTP download single file
	 */
	public static int downloadFile(String fileName, File localFile) {
		return downloadFile(IP, ACCOUNT, PASSWORD, REMOTE_LOG_DIR, fileName,
				GBK_ENCODING, BINARY_FILE_TYPE, localFile);
	}

	public static int downloadFile(String ip, String account, String password,
			String remoteDir, String fileName, String encoding, int fileType,
			File localFile) {
		FTPClient ftpClient = new FTPClient();
		FileOutputStream fos = null;

		try {
			ftpClient.connect(ip);
			ftpClient.login(account, password);

			if (!remoteDir.endsWith("/")) {
				remoteDir += "/";
			}
			String remoteFileName = remoteDir + fileName;
			fos = new FileOutputStream(localFile);

			ftpClient.setBufferSize(BUFFER_SIZE);
			ftpClient.setFileType(fileType);
			ftpClient.retrieveFile(remoteFileName, fos);
			log.info("Download " + fileName + " to "
					+ localFile.getParentFile().getPath());
			return 0;
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("FTP client make a mistake!", e);
		} finally {
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("Close FTP connection error!", e);
			}
		}
	}

	public static List<String> listFiles(String remoteDir) {
		FTPClient ftpClient = new FTPClient();
		List<String> nameList = new ArrayList<String>();
		try {
			ftpClient.connect(IP);
			ftpClient.login(ACCOUNT, PASSWORD);
			FTPFile[] files = ftpClient.listFiles(remoteDir);
			for (int i = 0; i < files.length; i++) {
				if (files[i].isFile()) {
					nameList.add(files[i].getName());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return nameList;
	}

	public static void main(String[] args) {
		// 放在本地的文件名
File localFile = new File("F:\\数据入库\\测试\\a.TXT");
		  int i = downloadFile("xx.TXT", localFile);
		  System.out.println(i);
		 			}
}


上面的例子是完全可用的,下面会附上所需要的jar包,其中main方法中实现的效果就是:
把指定服务器文件夹下面的xx.TXT文档下载到本地的F:\\数据入库\\测试\\a.TXT
分享到:
评论

相关推荐

    JAVA实现ftp上传,下载

    在FTP上传下载任务中,可能会涉及到XML文件的处理。Java提供了DOM、SAX和StAX三种主要的XML解析方式。 1. DOM(Document Object Model)解析:一次性加载整个XML文档到内存,形成一棵树形结构,方便遍历和查询。...

    FTP上传与下载程序PB

    在这个"FTP上传与下载程序PB"的案例中,我们将会探讨如何使用PowerBuilder来实现FTP功能,包括文件的上传和下载,以及可能涉及的自动升级机制。 首先,理解FTP的基本概念至关重要。FTP允许用户在两台计算机之间交换...

    VB FTP上传下载

    ### VB FTP上传下载知识点解析 #### 一、概述 在提供的代码示例中,主要涉及了使用Visual Basic(简称VB)进行FTP(File Transfer Protocol,文件传输协议)上传与下载的功能实现。FTP是一种用于在网络上进行文件...

    FTP上传与下载

    FTP上传文件或者FTP下载文件,自测 成功

    FTP工具上传下载FTP工具上传下载

    FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP...

    C# FTP上传下载文件

    FTP上传下载文件

    PB9 FTP上传与下载实例

    PB9 FTP上传与下载实例是基于PowerBuilder 9(PB9)开发的一种应用程序功能,它利用seinweb.dll组件来实现在FTP(File Transfer Protocol)服务器上进行文件的上传和下载操作。FTP是一种广泛用于互联网上的协议,...

    Delphi 实现FTP连接及上传下载

    以上就是关于“Delphi实现FTP连接及上传下载”的详细知识点。通过理解和实践这些步骤,开发者可以在Delphi应用程序中集成FTP功能,提升文件管理和传输的效率。对于U_FTP这样的项目文件,通常包含示例代码、配置文件...

    VB FTP文件上传、下载

    FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,允许用户从一台计算机(客户端)将文件上传到另一台计算机(服务器)或者从服务器下载文件。在VB中实现FTP功能,可以极大地简化文件管理操作,特别...

    FTP上传与下载pb9.0code

    标题“FTP上传与下载pb9.0code”指的是使用PowerBuilder 9.0(简称PB9)开发的一个程序,该程序实现了FTP(File Transfer Protocol)的上传和下载功能。PowerBuilder是一款强大的可视化编程工具,特别适合于构建...

    curl实现ftp上传下载

    FTP上传涉及到将本地文件发送到远程FTP服务器。使用libcurl,我们可以通过以下步骤实现: 1. **初始化libcurl**:创建一个`CURL`指针,并调用`curl_global_init()`初始化全局设置。 2. **设置URL**:使用`curl_...

    FTP远程上传下载文件

    总的来说,FTP远程上传下载文件涉及到网络通信、文件操作、进度跟踪以及安全性等多个方面,是Web开发中常见的功能之一。利用C#和Asp.NET,开发者可以构建高效、安全的FTP客户端服务,满足各种文件传输需求。

    C#winform FTP图片上传下载

    在本文中,我们将深入探讨如何使用C# WinForm应用程序实现FTP(文件传输协议)功能,以便进行图片的上传和下载。FTP是一种广泛用于在互联网上交换文件的标准协议,而C# WinForm则提供了用户友好的图形界面来实现这一...

    ftp上传下载图片

    "ftp上传下载图片" FTP(File Transfer Protocol,文件传输协议)是一种常用的网络协议,用于在网络上进行文件传输。FTP 协议允许用户在远程服务器上存储和检索文件。在这里,我们将讨论如何使用 C# 语言实现 FTP ...

    完整实现ftp上传与下载并解析csv文件

    FTP上传涉及到`storeFile()`方法,而下载则使用`retrieveFile()`。 2. CSV文件解析: CSV(Comma Separated Values)文件是一种常见的数据交换格式,通常用于导入和导出表格数据。Java中,可以使用OpenCSV或者...

    PowerBuilder9.0语言实现FTP上传与下载

    《PowerBuilder 9.0 实现FTP上传与下载详解》 在信息技术领域,尤其是在软件开发中,数据交换和资源共享是常见的需求。对于采用PowerBuilder 9.0作为开发工具的项目,如何实现在受限环境中通过FTP(文件传输协议)...

    一个ftp上传下载类(MFC)

    在这个场景中,"一个ftp上传下载类(MFC)" 是一个使用MFC构建的类,它封装了FTP协议,使得开发者能够方便地在自己的应用中实现FTP的上传和下载功能。 FTP上传下载类的核心功能包括: 1. **连接与断开**:类应包含...

    JAVA实现简单的对FTP上传与下载

    总的来说,使用Java实现FTP上传和下载涉及网络通信、文件操作和错误处理等多个方面的知识。通过"ftpLoadDown.jar"库,我们可以简化这个过程,使得开发者可以专注于业务逻辑,而无需关心底层的FTP协议细节。在实际...

    Android使用ftp方式实现文件上传和下载

    Android 使用 FTP 方式实现文件上传和下载 Android 使用 FTP 方式实现文件上传和下载是移动应用开发中的一项重要功能,特别是在 OTA 在线升级项目中,文件上传和下载是一个关键步骤。下面就 Android 使用 FTP 方式...

    Qt5.8用FTP实现文件上传和下载(带进度条)

    要实现FTP上传,我们首先需要建立一个FTP连接。这可以通过创建一个QNetworkAccessManager实例并调用其get或post方法完成。对于FTP,我们需要使用FTP URL,如“ftp://username:password@server:port/path”。然后,...

Global site tag (gtag.js) - Google Analytics