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

JAVA FTP上传下载

    博客分类:
  • java
 
阅读更多
import java.util.ArrayList;
import java.util.List;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;

public class FtpUtil {
	FtpClient ftpClient;

	/**
	 * connectServer 连接ftp服务器
	 * 
	 * @throws java.io.IOException
	 * @param path
	 *            文件夹,空代表根目录
	 * @param password
	 *            密码
	 * @param user
	 *            登陆用户
	 * @param server
	 *            服务器地址
	 */
	public void connectServer(String server, String user, String password, String path) throws IOException {
		// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
		// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
		ftpClient = new FtpClient();
		ftpClient.openServer(server);
		ftpClient.login(user, password);
		// path是ftp服务下主目录的子目录
		if (path.length() != 0)
			ftpClient.cd(path);
		// 用2进制上传、下载
		ftpClient.binary();
	}

	/**
	 * upload 上传文件
	 * 
	 * @throws java.lang.Exception
	 * @return -1 文件不存在 -2 文件内容为空 >0 成功上传,返回文件的大小
	 * @param newname
	 *            上传后的新文件名
	 * @param filename
	 *            上传的文件
	 */
	public long upload(String filename, String newname) throws Exception {
		long result = 0;
		TelnetOutputStream os = null;
		FileInputStream is = null;
		try {
			java.io.File file_in = new java.io.File(filename);
			if (!file_in.exists())
				return -1;
			if (file_in.length() == 0)
				return -2;
			os = ftpClient.put(newname);
			result = file_in.length();
			is = new FileInputStream(file_in);
			byte[] bytes = new byte[1024];
			int c;
			while ((c = is.read(bytes)) != -1) {
				os.write(bytes, 0, c);
				
			}
		} finally {
			if (is != null) {
				is.close();
			}
			if (os != null) {
				os.close();
			}
		}
		return result;
	}

	/**
	 * upload
	 * 
	 * @throws java.lang.Exception
	 * @return
	 * @param filename
	 */
	public long upload(String filename) throws Exception {
		String newname = "";
		if (filename.indexOf("/") > -1) {
			newname = filename.substring(filename.lastIndexOf("/") + 1);
		} else {
			newname = filename;
		}
		return upload(filename, newname);
	}

	/**
	 * download 从ftp下载文件到本地
	 * 
	 * @throws java.lang.Exception
	 * @return
	 * @param newfilename
	 *            本地生成的文件名
	 * @param filename
	 *            服务器上的文件名
	 */
	public long download(String filename, String newfilename) throws Exception {
		long result = 0;
		TelnetInputStream is = null;
		FileOutputStream os = null;
		try {
			is = ftpClient.get(filename);
			java.io.File outfile = new java.io.File(newfilename);
			os = new FileOutputStream(outfile);
			byte[] bytes = new byte[1024];
			int c;
			while ((c = is.read(bytes)) != -1) {
				os.write(bytes, 0, c);
				result = result + c;
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (is != null) {
				is.close();
			}
			if (os != null) {
				os.close();
			}
		}
		return result;
	}

	/**
	 * 取得某个目录下的所有文件列表
	 * 
	 */
	public List getFileList(String path) {
		List list = new ArrayList();
		try {
			DataInputStream dis = new DataInputStream(ftpClient.nameList(path));
			String filename = "";
			while ((filename = dis.readLine()) != null) {
				list.add(filename);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

	/**
	 * closeServer 断开与ftp服务器的链接
	 * 
	 * @throws java.io.IOException
	 */
	public void closeServer() throws IOException {
		try {
			if (ftpClient != null) {
				ftpClient.closeServer();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws Exception {
		FtpUtil ftp = new FtpUtil();
		try {
			// 连接ftp服务器
			ftp.connectServer("127.0.0.1", "test", "123", "");
			/** 上传文件到 info2 文件夹下 */
			System.out.println("filesize:" + ftp.upload("D:/log/login.log") + "字节");
			/** 取得info2文件夹下的所有文件列表,并下载到 E盘下 */
			List list = ftp.getFileList(".");
			for (int i = 0; i < list.size(); i++) {
				String filename = (String) list.get(i);
				System.out.println(filename);
				ftp.download(filename, "E:/" + filename);
			}
		} catch (Exception e) {
			// /
		} finally {
			ftp.closeServer();
		}
	}
}
分享到:
评论

相关推荐

    java Ftp上传下载

    Java FTP上传下载是Java编程语言中用于实现文件传输协议(FTP)的一种常见应用。FTP允许用户在客户端和服务器之间交换文件,这对于数据共享、备份和远程协作非常有用。以下是一些关于Java FTP上传下载的关键知识点:...

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

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

    java ftp 上传 下载 断点续传

    总结,Java FTP上传下载及断点续传是Java开发中常见且实用的技术,通过Apache Commons Net库可以方便地实现这些功能。在实际应用中,需要考虑网络环境、文件权限、错误处理等因素,以确保文件传输的稳定性和可靠性。

    Java实现FTP文件上传和下载

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

    java ftp上传下载

    Java FTP上传下载是Java开发中常见的一项任务,它涉及到网络通信和文件操作。FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,而Java提供了一系列API来支持FTP操作,如`java.net.FTPClient...

    java FTP 上传 下载 (中文 ) 文件

    以下是一个使用Apache Commons Net库进行FTP上传和下载的简单示例: 1. **FTP连接**: - 导入必要的库:`import org.apache.commons.net.ftp.FTP;` 和 `import org.apache.commons.net.ftp.FTPClient;` - 创建`...

    java ftp上传 下载,获取文件集合

    java 连接linux系统上的ftp服务器,通过java代码上传,下载文件 通过链接ftp,获取文件列表,上传。下载、删除文件功能实现

    javaFTP上传下载

    以上代码示例展示了Java FTP上传和下载的基本操作。在实际应用中,可能需要处理异常、关闭流、重试机制、错误处理等更多细节。`FtpUtils`可能是包含这些功能的工具类,它可以帮助简化FTP操作,提高代码复用性。

    Java FTP上传下载 简单例子

    这个"Java FTP上传下载简单例子"的资源可能包含了两个核心方法,分别用于实现FTP的上传和下载功能。下面将详细讲解Java中如何实现FTP的上传与下载操作。 FTP上传通常涉及到以下几个步骤: 1. **建立连接**:首先,...

    java ftp 上传下载,代码。

    以上就是使用Java进行FTP上传和下载的基本步骤,结合Apache Commons Net库和WinFtp Server2.0.1,你可以创建一个完整的FTP客户端程序进行实践。在实际应用中,你可能还需要处理各种异常情况,如网络中断、文件权限...

    JavaFTP上传下载

    在提供的`FTPTest.java`文件中,应该包含了具体的FTP上传或下载的示例代码,可以通过查看这个源码了解如何在Java中实现FTP操作。通过分析这个文件,你可以学习如何组织代码,如何处理异常,以及如何在实际项目中使用...

    java+FTP上传下载

    Java FTP上传下载是Java编程中一个常见的网络操作,主要用于在本地计算机和远程FTP服务器之间交换文件。FTP(File Transfer Protocol)是一种应用层协议,用于在Internet上可靠地传输文件。在Java中,我们可以使用`...

    Java FTP上传下载文件示例工程

    以下将详细讲解Java FTP上传下载文件的相关知识点。 首先,Java中进行FTP操作主要依赖于`java.net`和`java.io`这两个核心包,以及`org.apache.commons.net.ftp`这个Apache Commons Net库。Apache Commons Net库提供...

    Java Ftp上传下载

    因此选择了FTP上传,在网上搜索了很多例子后并经自己对比整理后决定采用apache包中的FTP实现上传下载,在使用过程需要注意的是对中文名进行字符转码,FTP服务器我选用的是Serve-U,这个工具以前用过,比较稳定。...

    java Ftp上传下载工具类

    使用Apache commons net组件实现ftp上传与下载功能

    JAVA FTP上传下载

    本文将深入探讨如何使用Java实现FTP文件的上传和下载操作。 FTP协议是Internet上的一个标准协议,用于在客户端和服务器之间进行文件传输。在Java中,我们可以使用`java.net`和`java.io`库中的类来实现FTP功能,或者...

    java ftp 上传 下载 rar 压缩 解压

    在IT行业中,Java FTP上传、下载以及RAR压缩与解压是常见的操作,这些功能在文件管理系统、数据迁移、备份恢复等场景中广泛应用。本篇将详细介绍如何使用Java实现FTP(File Transfer Protocol)传输以及RAR文件的...

    java Ftp 上传下载

    基于java程序的上传下载,不是jsp程序

    JAVA FTP上传下载实例

    以下是一个简单的FTP上传文件的Java代码示例: ```java import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; public class FtpUploader { public static void uploadFile...

    JAVA实现ftp上传,下载

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

Global site tag (gtag.js) - Google Analytics