`
weinan
  • 浏览: 39502 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ftp上传下载

阅读更多

import sun.net.ftp.*;
import sun.net.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 使用sun.net.ftp工具包进行ftp上传下载
  */
public class FtpTool {
	String ip;
	int port;
	String user;
	String pwd;
	String remotePath;
	String localPath;
	FtpClient ftpClient;

	/**
	 * 连接ftp服务器
	 * 
	 * @param ip
	 * @param port
	 * @param user
	 * @param pwd
	 * @return
	 * @throws Exception
	 */
	public boolean connectServer(String ip, int port, String user, String pwd)
			throws Exception {
		boolean isSuccess = false;
		try {
			ftpClient = new FtpClient();
			ftpClient.openServer(ip, port);
			ftpClient.login(user, pwd);
			isSuccess = true;
		} catch (Exception ex) {
			throw new Exception("Connect ftp server error:" + ex.getMessage());
		}
		return isSuccess;
	}

	/**
	 * 下载文件
	 * 
	 * @param remotePath
	 *            ftp文件夹路径
	 * @param localPath
	 *            下载到本地路径
	 * @param filename
	 *            ftp文件名称
	 * @throws Exception
	 */
	public void downloadFile(String remotePath, String localPath,
			String filename) throws Exception {
		try {
			if (connectServer(getIp(), getPort(), getUser(), getPwd())) {
				// 创建文件夹
				java.io.File myFilePath = new java.io.File(localPath);
				if (!myFilePath.isDirectory()) {
					myFilePath.mkdir();
				}

				if (remotePath.length() != 0)
					ftpClient.cd(remotePath);
				ftpClient.binary();
				TelnetInputStream is = ftpClient.get(filename);
				File file_out = new File(localPath + File.separator + filename);
				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) {
			throw new Exception("ftp download file error:" + ex.getMessage());
		}
	}

	/**
	 * 上传文件
	 * 
	 * @param remotePath
	 * @param localPath
	 * @param filename
	 * @throws Exception
	 */
	public void uploadFile(String remotePath, String localPath, String filename)
			throws Exception {
		try {
			if (connectServer(getIp(), getPort(), getUser(), getPwd())) {
				if (remotePath.length() != 0)
					ftpClient.cd(remotePath);
				ftpClient.binary();
				TelnetOutputStream os = ftpClient.put(filename);
				File file_in = new File(localPath + File.separator + filename);
				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 ex) {
			throw new Exception("ftp upload file error:" + ex.getMessage());
		}
	}

	/**
	 * @return
	 */
	public String getIp() {
		return ip;
	}

	/**
	 * @return
	 */
	public int getPort() {
		return port;
	}

	/**
	 * @return
	 */
	public String getPwd() {
		return pwd;
	}

	/**
	 * @return
	 */
	public String getUser() {
		return user;
	}

	/**
	 * @param string
	 */
	public void setIp(String string) {
		ip = string;
	}

	/**
	 * @param i
	 */
	public void setPort(int i) {
		port = i;
	}

	/**
	 * @param string
	 */
	public void setPwd(String string) {
		pwd = string;
	}

	/**
	 * @param string
	 */
	public void setUser(String string) {
		user = string;
	}

	/**
	 * @return
	 */
	public FtpClient getFtpClient() {
		return ftpClient;
	}

	/**
	 * @param client
	 */
	public void setFtpClient(FtpClient client) {
		ftpClient = client;
	}

	/**
	 * @return
	 */
	public String getRemotePath() {
		return remotePath;
	}

	/**
	 * @param string
	 */
	public void setRemotePath(String string) {
		remotePath = string;
	}

	/**
	 * @return
	 */
	public String getLocalPath() {
		return localPath;
	}

	/**
	 * @param string
	 */
	public void setLocalPath(String string) {
		localPath = string;
	}

	/**
	 * 
	 * 取得指定目录下的所有文件列表,包括子目录.
	 * 
	 * @param baseDir
	 *            File 指定的目录
	 * 
	 * @return 包含java.io.File的List
	 * 
	 */

	private static List<File> getSubFiles(File baseDir) {

		List<File> ret = new ArrayList<File>();

		File[] tmp = baseDir.listFiles();

		for (int i = 0; i < tmp.length; i++) {

			if (tmp[i].isFile())

				ret.add(tmp[i]);

			if (tmp[i].isDirectory())

				ret.addAll(getSubFiles(tmp[i]));

		}

		return ret;

	}

	/**
	 * 
	 * 给定根目录,返回一个相对路径所对应的实际文件名.
	 * 
	 * @param zippath
	 *            指定根目录
	 * 
	 * @param absFileName
	 *            相对路径名,来自于ZipEntry中的name
	 * 
	 * @return java.io.File 实际的文件
	 * 
	 */

	private static File getRealFileName(String zippath, String absFileName) {

		String[] dirs = absFileName.split("/", absFileName.length());

		File ret = new File(zippath);// 创建文件对象

		if (dirs.length > 1) {

			for (int i = 0; i < dirs.length - 1; i++) {

				ret = new File(ret, dirs[i]);

			}

		}

		if (!ret.exists()) {// 检测文件是否存在

			ret.mkdirs();// 创建此抽象路径名指定的目录

		}

		ret = new File(ret, dirs[dirs.length - 1]);// 根据 ret 抽象路径名和 child
													// 路径名字符串创建一个新 File 实例

		return ret;

	}

	/**
	 * 
	 * 取得ftp服务器上某个目录下的所有文件名
	 * 
	 * @param ftp,
	 *            FtpClient类实例; folderName,服务器的文件夹名
	 * 
	 * @throws Exception
	 * 
	 * @return list 某目录下文件名列表
	 * 
	 */

	private List getServerFileNameList(FtpClient ftp, String folderName)
			throws Exception {

		BufferedReader dr = new BufferedReader(new InputStreamReader(ftp
				.nameList(folderName)));

		List<String> list = new ArrayList<String>();

		String s;

		while ((s = dr.readLine()) != null) {

			list.add(s);

		}

		return list;

	}

	public static void main(String[] args) throws Exception {
		FtpTool tt = new FtpTool();
		boolean bb = tt.connectServer("195.205.1.2", 21, "ftppub", "ftppub");
		System.out.println(bb);
		tt.ip = "195.205.1.2";
		tt.port = 21;//端口号
		tt.user = "ftppub";
		tt.pwd = "ftppub";
		// tt.downloadFile("/opt/up/20100810/","E:/ftp","SEQNO_20100810.zip");
		tt.downloadFile("/opt/up/20100810/", "E:/ftp/oppt",
				"DIR.SEQNO_20100810.txt");
		/*
		 * List list =
		 * tt.getServerFileNameList(tt.ftpClient,"/opt/up/20100810/SEQNO_20100810.zip");
		 * for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); }
		 */
	}

}

分享到:
评论

相关推荐

    VB API 实现FTP上传下载源代码

    **VB API FTP上传下载源代码详解** 在信息技术领域,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。在VB(Visual Basic)环境中,我们可以使用API(Application Programming Interface...

    一个ftp上传下载类(MFC)

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

    VC++ FTP上传下载

    总的来说,VC++ FTP上传下载涉及网络编程、文件操作和XML处理等多个方面。开发者需要熟悉WinInet API或第三方FTP库的使用,理解FTP协议的工作原理,以及如何在C++中处理XML文件。通过这些技术,可以在VC++环境中实现...

    VB6 FTP 上传 下载 源代码

    VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用. VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用. VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用.

    Qt4实现ftp上传下载服务器

    **Qt4实现FTP上传下载服务器** Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面和移动设备的应用程序开发。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,允许用户从远程主机...

    C# FTP上传下载文件

    FTP上传下载文件

    C#FTP上传下载

    C# FTP上传下载是开发过程中常见的一项任务,它涉及到网络通信和文件操作。在C#中,我们可以利用System.Net命名空间中的FtpWebRequest和FtpWebResponse类来实现FTP(File Transfer Protocol)的功能。下面将详细介绍...

    FTP上传下载文件demo

    在这个“FTP上传下载文件demo”项目中,开发者使用C++编程语言在Visual Studio 2010环境下创建了一个功能完备的FTP客户端应用。这个应用能够执行基本的FTP操作,包括上传文件到远程FTP服务器、从服务器下载文件以及...

    ftp上传下载java代码

    四、FTP上传下载的进阶功能 1. 递归上传/下载目录:可以遍历本地目录,逐个上传或下载文件。 2. 断点续传:如果文件较大,可以记录已传输的部分,在下次连接时继续上传或下载。 3. 多线程上传/下载:通过多线程同时...

    qt ftp上传下载

    这篇博客文章“qt ftp上传下载”探讨了如何在Qt环境中实现FTP的上传和下载功能。我们将详细解析这个主题,了解相关知识点。 首先,要实现FTP功能,你需要使用Qt库中的QFtp模块。QFtp类提供了FTP客户端的功能,可以...

    java写的FTP上传下载工具(支持多用户)

    Java编写的FTP上传下载工具是一种基于Java语言实现的文件传输应用程序,主要功能是与FTP(File Transfer Protocol)服务器进行交互,实现文件的上传和下载。这个工具特别之处在于它支持多用户登录,这意味着不同的...

    FTP上传下载 C#源代码

    在本文中,我们将深入探讨FTP上传下载的C#源代码实现及其相关的知识点。 一、FTP基本概念 FTP允许用户在两台计算机之间交换文件,通常涉及一个服务器(提供文件)和一个客户端(请求文件)。它使用TCP作为传输层...

    VB FTP上传下载

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

    VisualC 实效编程 99 FTP上传下载

    VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效...

    ftp上传下载 linux环境下程序

    ftp上传下载 linux环境下程序 网络高级程序设计课程实验

    ftp上传下载图片

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

    c# FTP上传下载demo

    本篇文章将深入探讨如何利用C#实现FTP上传和下载功能,并结合给定的"FTP上传下载demo"和"demo(upload)、FTPupload"这两个文件名,我们将具体分析其可能包含的代码示例。 首先,让我们了解FTP上传和下载的基本原理...

    FTP上传下载的实现,网络编程

    FTP上传下载的实现,网络编程 FTP SOCKET MFC 网络

    Java 基于Swing的FTP上传下载程序

    Java基于Swing的FTP上传下载程序是一个用户界面友好、功能完备的应用,主要用于通过FTP(File Transfer Protocol)协议实现文件的上传和下载。Swing是Java提供的一个轻量级的GUI库,它允许开发者创建出美观且功能...

Global site tag (gtag.js) - Google Analytics