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

使用commons-net进行文件上传、下载与删除

阅读更多

apache地址:http://commons.apache.org/net/

改自网友的代码

package Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

public class TestFtp
{

	/**
	 * @param args
	 * @throws IOException 
	 * @throws SocketException 
	 */
	public static void main(String[] args) throws SocketException, IOException
	{
		TestFtp t = new TestFtp();
		
		File file = new File("src//Test//Test.java");
		System.out.println(file.getAbsolutePath());
		FileInputStream in  = new FileInputStream(file);
		
		boolean flag;//  =t.uploadFile("10.1.0.168", 21, "web", "web", "/", "Test.java", in);
		//if(flag)
		//	System.out.println("上传成功");
		
		flag = t.delFile("10.1.0.168", 21, "web", "web", "/", "Test.java");
		if(flag)
			System.out.println("下载成功");
	}

	/**
	 * Description: 向FTP服务器上传文件
	 * 
	 * @param url
	 *            FTP服务器hostname
	 * @param port
	 *            FTP服务器端口
	 * @param username
	 *            FTP登录账号
	 * @param password
	 *            FTP登录密码
	 * @param path
	 *            FTP服务器保存目录
	 * @param filename
	 *            上传到FTP服务器上的文件名
	 * @param input
	 *            输入流
	 * @return 成功返回true,否则返回false
	 */
	public boolean uploadFile(String url, int port, String username,
			String password, String path, String filename, InputStream input)
	{
		// 初始表示上传失败
		boolean success = false;
		// 创建FTPClient对象
		FTPClient ftp = null;
		try
		{
			//登陆FTP
			ftp = this.login(url, port, username, password);
			if(ftp == null)
				return success;
			
			// 转到指定上传目录
			ftp.changeWorkingDirectory(path);
			// 将上传文件存储到指定目录
			ftp.storeFile(filename, input);
			// 关闭输入流
			input.close();
			// 退出ftp
			ftp.logout();
			// 表示上传成功
			success = true;
		} catch (IOException e)
		{
			e.printStackTrace();
		} finally
		{
			if (ftp.isConnected())
			{
				try
				{
					ftp.disconnect();
				} catch (IOException ioe)
				{
				}
			}
		}
		return success;
	}

	/**
	 * Description: 从FTP服务器下载文件
	 * 
	 * @param url
	 *            FTP服务器hostname
	 * @param port
	 *            FTP服务器端口
	 * @param username
	 *            FTP登录账号
	 * @param password
	 *            FTP登录密码
	 * @param remotePath
	 *            FTP服务器上的相对路径
	 * @param fileName
	 *            要下载的文件名
	 * @param localPath
	 *            下载后保存到本地的路径
	 * @return
	 */
	public boolean downFile(String url, int port, String username,
			String password, String remotePath, String fileName,
			String localPath)
	{
		// 初始表示下载失败
		boolean success = false;
		// 创建FTPClient对象
		FTPClient ftp = null;
		try
		{
			//登陆FTP
			ftp = this.login(url, port, username, password);
			if(ftp==null)
			 return success;
			
			// 转到指定上传目录
			ftp.changeWorkingDirectory(remotePath);
			
			// 列出该目录下所有文件
			FTPFile[] fs = ftp.listFiles();
			// 遍历所有文件,找到指定的文件
			for (FTPFile ff : fs)
			{
				if (ff.getName().equals(fileName))
				{
					// 根据绝对路径初始化文件
					File localFile = new File(localPath + "/" + ff.getName());
					// 输出流
					OutputStream is = new FileOutputStream(localFile);
					// 下载文件
					ftp.retrieveFile(ff.getName(), is);
					is.close();
				}
			}
			// 退出ftp
			ftp.logout();
			// 下载成功
			success = true;
		} catch (IOException e)
		{
			e.printStackTrace();
		} finally
		{
			if (ftp.isConnected())
			{
				try
				{
					ftp.disconnect();
				} catch (IOException ioe)
				{
				}
			}
		}
		return success;
	}
	
	public boolean delFile(String url, int port, String username,
			String password, String remotePath, String fileName)
	{
		// 初始表示删除文件失败
		boolean success = false;
		// 创建FTPClient对象
		FTPClient ftp = null;
		try
		{
			//登陆FTP
			ftp = this.login(url, port, username, password);
			if(ftp==null)
			 return success;
			
			// 转到指定目录
			ftp.changeWorkingDirectory(remotePath);
			
			// 列出该目录下所有文件
			FTPFile[] fs = ftp.listFiles();
			// 遍历所有文件,找到指定的文件
			for (FTPFile ff : fs)
			{
				if (ff.getName().equals(fileName))
				{
					success = ftp.deleteFile(fileName);
				}
			}
			// 退出ftp
			ftp.logout();			
		} catch (IOException e)
		{
			e.printStackTrace();
		} finally
		{
			if (ftp.isConnected())
			{
				try
				{
					ftp.disconnect();
				} catch (IOException ioe)
				{
				}
			}
		}
		return success;
	}
	
	/** 登陆FTP **/
	public FTPClient login(String url,int port,String username,String password) throws SocketException, IOException
	{
		FTPClient ftp = new FTPClient();
		// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
		ftp.connect(url, port);
		// 登录ftp
		ftp.login(username, password);
		
		int reply = ftp.getReplyCode();
		if (!FTPReply.isPositiveCompletion(reply))
		{
			ftp.disconnect();
			return null;
		}	
		
		return ftp;
	}

}

  

分享到:
评论

相关推荐

    commons-net-jar包.zip

    库提供了FTPClient、FTPSSLClient、FTPSSLSocketFactory等类,可以实现FTP的连接、登录、文件上传、下载、删除、重命名等操作,并且支持主动和被动模式,以及SSL/TLS加密。 3. **Telnet功能** Telnet协议在commons...

    文件上传两个jar包commons-fileupload-1.3.1和commons-io-2.4

    在文件上传过程中,`commons-io`可能会被用来处理临时文件、读取文件内容或者进行文件流的转换。 这两个库的结合使用,使得在Java中实现文件上传功能变得更加简单和可靠。首先,通过Servlet容器接收HTTP请求,然后...

    commons-net-3.1.jar,3.3,3.6版本

    - Commons Net提供了完善的FTP客户端实现,可以进行文件的上传、下载、删除等操作,支持FTP、FTPS(FTP over SSL/TLS)和SFTP(SSH File Transfer Protocol)。 - 在不同版本中,FTP客户端的性能和稳定性得到了...

    commons-net-1.4.1.jar

    Apache Commons Net 1.4.1提供了一个全面的Java实现,支持FTP的各种操作,包括上传、下载、列出目录、创建和删除文件等。这个库不仅简化了FTP交互,还处理了许多底层的网络细节,如连接管理和错误处理,使得开发者...

    commons-net-3.3-3.4-3.5-3.6.zip

    在Android应用开发中,有时我们需要实现将文件上传到FTP(File Transfer Protocol)服务器的功能。Apache Commons Net库是一个非常实用的工具,它提供了多种网络协议的支持,包括FTP。在这个压缩包"commons-...

    commons-fileupload-1.3.jar和commons-io-1.2.jar.zip

    Apache Commons FileUpload和Commons IO是两个非常重要的库,它们为Java提供了强大的文件上传和处理能力。在这个场景中,我们关注的是"commons-fileupload-1.3.jar"和"commons-io-1.2.jar"这两个文件,它们被打包在...

    commons-net-3.2.jar

    1. FTP/FTPS模块:Apache Commons Net提供了强大的FTP客户端支持,包括文件上传、下载、列表、删除、重命名等操作,同时也支持FTP over SSL/TLS(FTPS)以确保数据传输的安全性。 2. Telnet模块:这个模块提供了对...

    apache的FTP包commons-net-1.4.1.jar,jakarta-oro-2.0.8.jar

    在这个版本中,Apache Commons Net提供了对FTP协议全面的支持,包括连接到FTP服务器、上传和下载文件、创建和删除目录、改变工作目录、处理文件权限等。它的API设计得相当直观,使得开发者能够轻松地进行FTP操作。...

    commons-fileupload-1.2.1.jar 和commons-io-1.4.jar

    Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传的两个重要库,它们在Web应用中被广泛使用。这两个库分别提供了不同的功能,但在处理文件上传时常常一起使用。 `commons-fileupload-1.2.1....

    commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar

    Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传的两个重要库。它们为开发者提供了强大而灵活的工具,使得在Web应用中处理文件上传变得简单易行。 `commons-fileupload-1.2.1.jar`是Apache ...

    commons-fileupload-1.1.1.jar commons-io-1.2.jar上传文件jar包

    例如,当文件上传完成后,可能需要将上传的文件移动到服务器的特定目录,或者进行一些预处理,这时Commons IO就派上用场了。 使用这两个库实现文件上传的基本步骤如下: 1. 创建一个Servlet或Filter来处理HTTP请求...

    commons-fileupload-1.3.3.jar和commons-io-1.3.2.jar程序文件

    在实际开发中,使用`Commons FileUpload`和`Commons IO`库,开发者可以方便地处理复杂的文件上传逻辑,比如限制文件类型、大小,或者进行上传后的文件处理。 这两个库在Java Web应用、尤其是Servlet和JSP开发中非常...

    commons-fileupload-1.2.2.jar和commons-io-2.4.jar包

    在与FileUpload库配合使用时,IO库可以方便地进行文件的读写和临时存储,确保文件上传过程的稳定性和安全性。 这两个库的协同工作流程大致如下: 1. **接收请求**:服务器端接收到带有文件的HTTP请求,请求内容...

    commons-fileupload-1.3.2.jar和commons-io-2.5.jar

    在使用`commons-fileupload-1.3.2.jar`处理文件上传时,通常会配合`commons-io-2.5.jar`来完成一些辅助操作,例如读取上传文件的内容、检查文件类型、移动文件到目标位置等。通过这两个库的组合,开发者能够方便地在...

    commons-fileupload-1.3.2jar和commons-io-2.5.jar包

    在Java Web开发中,文件上传是一项常见的功能,尤其是在构建用户交互性强的Web应用程序时。Apache Commons FileUpload和Commons IO库提供了强大的支持,使得开发者能够方便地处理客户端上传的文件。这里我们将深入...

    commons-fileupload.jar和commons-io.jar

    在处理文件上传过程中, Commons IO可以帮助我们进行文件读写、复制、删除等操作。例如: 1. ` FileUtils `:包含了一系列静态方法,用于执行基本的文件操作,如读取、写入、复制、删除和移动文件。 2. `FileUtils....

    commons-net-1.4.1

    Apache Commons Net库提供了全面的FTP客户端功能,包括连接到FTP服务器、上传和下载文件、创建和删除目录、改变工作目录、列出目录内容等。它还支持主动和被动模式,以适应不同网络环境下的数据传输。此外,库中包含...

    commons-fileupload-1.3.2jar包和commons-io-2.5jar包.zip

    Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传和I/O操作的重要库。这两个库在处理Web应用,特别是基于JSP(JavaServer Pages)的文件上传功能时,扮演着核心角色。在这个主题中,我们将...

    commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar程序文件

    Apache Commons FileUpload与Apache Commons IO是Java开发中用于处理文件上传功能的重要库。这两个库在Web应用程序中尤其常见,因为它们提供了处理HTTP请求中的多部分数据(如表单上传的文件)的便捷方法。 `...

Global site tag (gtag.js) - Google Analytics