`

java 中应用FTP的一些知识点及注意

阅读更多

主要有ftp的上传、下载、取得ftp文件列表功能。其中上传引用的是jdk自带的sun.net.flt.FtpClient(路径不知时候正确),文件列表和下载应用的是apache 的common -net .jar  jar包

具体代码如下:

	/**
		 * 连接ftp服务器
		 * @param server  服务器地址
		 * @param user 用户名
		 * @param password  密码
		 * @param path 用户权限根路径下面的路径
		 */
		public static FtpClient connectServer(String server, String user, String password,String path){
			// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
			// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
			FtpClient ftpClient = new FtpClient();
			try {
				ftpClient.openServer(server);
				ftpClient.login(user, password);
				//path是ftp服务下主目录的子目录
				if (path.length() != 0)
				ftpClient.cd(path);
				//用2进制上传
				ftpClient.binary();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return ftpClient;
		}
	/**
	 * 上传文件到ftp服务器
	 * 	@param 服务名称 ,后面没有端口参数默认为21
	 *  @param user 用户名
	 *  @param password 密码
	 *  @param path 路径
	 *  @file 要上传的文件
	 */
	public static boolean uploadToFtp(String server, String user, String password,String path,File file){
		// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
		// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
		boolean flag = true;
		FtpClient ftpClient = new FtpClient();
		try {
			ftpClient.openServer(server);
			ftpClient.login(user, password);
			//path是ftp服务下主目录的子目录
			if (path.length() != 0)
			ftpClient.cd(path);
			//用2进制上传
			ftpClient.binary();
			if (ftpClient != null) {
			   TelnetOutputStream os = null;
				FileInputStream is = null;
				//"upftpfile"用ftp上传后的文件名
				os = ftpClient.put(file.getName());				
				is = new FileInputStream(file);
				byte[] bytes = new byte[1024];
				int c;
				while ((c = is.read(bytes)) != -1) {
				  os.write(bytes, 0, c);
				}
				if (is != null) {
				  is.close();
				}
				if (os != null) {
				  os.close();
				}
			} 
			ftpClient.closeServer();						
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			flag = false;
		}
		return flag;
	}
	
	/**
	 *得到FTP中的文件目录 
	 */
	public static List getFtpList(String server, String user, String password,String path){
	   org.apache.commons.net.ftp.FTPClient ftpClient = new FTPClient();
	   List<FTPFile> listFtpFiles  = new ArrayList<FTPFile>();
	try {
	   ftpClient.connect(server);
	   ftpClient.login(user, password);
	   FTPFile[] names = ftpClient.listFiles(path);
	  // ftpClient.setKeepAlive(true);
	   for(FTPFile ftpFile :names){
		   //System.out.println("文件名称:"+new String(ftpFile.getName().getBytes("iso-8895-1"),"gbk"));
		   ftpFile.setName(new String(ftpFile.getName().getBytes("iso-8859-1"),"gbk"));
		   listFtpFiles.add(ftpFile);
	   }
	   ftpClient.disconnect();
	} catch (SocketException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	} catch (IOException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	   return listFtpFiles;
	}
	
	 /**
  * ftp下载
  * @param fileName 要下载的文件的名称
  * @param outDir 文件的输出路径
  */
 public static boolean  downLoadFtpFile(String server, String user, String password,String path,String fileName,String outDir){
  boolean flag = true;
  org.apache.commons.net.ftp.FTPClient ftpClient = new FTPClient();  
  try {
     ftpClient.connect(server);
     ftpClient.login(user, password);
     FTPFile[] names = ftpClient.listFiles(path);
    // ftpClient.setKeepAlive(true);
     for(FTPFile ftpFile :names){
      //System.out.println("文件名称:"+new String(ftpFile.getName().getBytes("iso-8895-1"),"gbk"));
      ftpClient.setControlEncoding("gbk");
      String name = new String(ftpFile.getName().getBytes("iso-8859-1"),"gbk");
     // String name = ftpFile.getName();
     if(name.equalsIgnoreCase(fileName)){
       OutputStream os = new FileOutputStream(new File(outDir+File.separatorChar+name));
       System.out.println("文件名:"+name);
       ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
       //如果对名称不进行转换的话会将中文的文件下下来后大小变为0kb
       ftpClient.retrieveFile(new String((path+File.separatorChar+name).getBytes("gbk"),"iso-8859-1"), os);
       os.close();
     }    
     }
     ftpClient.disconnect();
  } catch (Exception e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
   flag = false;
  }
     return flag;
 }

 

分享到:
评论

相关推荐

    java ftp java ftp

    在实际开发中,你可以根据具体的需求,结合上述知识点,构建出满足功能的FTP客户端应用。例如,`ftptest1`可能是一个示例程序,演示了如何使用Java FTP进行文件传输或其他FTP操作。通过分析这个程序,可以进一步了解...

    JAVA中实现FTP功能代码

    需要注意的是,代码中的一些方法如`printCommandListener`和`IsoToCh`并未在提供的代码片段中给出具体实现,这可能是为了简化代码展示而省略的。实际应用中,这些方法应该根据具体需求进行实现。 总的来说,Java中...

    java实现ftp上传jar包

    以下是一些相关的知识点: 1. **FTP协议**:FTP是一种用于在网络上进行文件传输的应用层协议。它允许用户从远程主机下载文件或向远程主机上传文件。在Java中,我们可以使用多种库来实现FTP功能。 2. **Java FTP库*...

    java应用ftp操作文件

    下面将详细介绍Java FTP操作文件的相关知识点。 1. **FTP协议**:FTP是一种用于在网络上进行文件传输的应用层协议,允许用户从远程服务器上传、下载文件或执行其他文件管理操作。 2. **Java标准库中的FTP支持**:...

    java 读取FTP服务器文件

    以下是一份详细的Java FTP文件读取教程,涵盖了相关的重要知识点。 1. **FTP库的选择**: Java标准库中并没有内置FTP客户端,因此我们需要引入第三方库,如Apache Commons Net库。这个库提供了丰富的FTP功能,包括...

    Java实现FTP文件上传和下载

    以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。 首先,Java通过`java.net`和`javax.net`包提供了FTP功能,但这些原生API并不易用。因此,大多数开发人员会使用第三方库如Apache...

    java中的ftp连接与获取.rar_ftp java_java ftp_连接ftp

    本文将深入探讨Java中实现FTP连接的基本步骤和关键知识点。 首先,Java提供了一个内置的`java.net.Socket`类,可以用来创建网络连接,但FTP协议的复杂性使得直接使用Socket进行FTP操作并不方便。因此,Java社区开发...

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

    本文将深入探讨这些知识点,并提供一个基于`ftp4j`库的示例代码。 1. FTP协议: 文件传输协议(FTP)是一种用于在网络上进行文件传输的标准协议。它允许用户从远程服务器上传、下载或列出文件。FTP基于TCP/IP,...

    java工具类 ftp 文件比较 socket http

    针对标题和描述中提到的"java工具类 ftp 文件比较 socket http",我们将探讨Java中的FTP文件传输、文件比较、Socket通信以及HTTP协议的相关知识点。 1. **Java FTP文件传输**: Java通过`java.net....

    Java实现ftp上传

    本文将详细介绍如何使用Java实现FTP上传功能,并探讨相关知识点。 首先,要进行FTP操作,我们需要一个Java FTP客户端库。Java标准库并不直接支持FTP,但提供了`java.net.Socket`类,可以通过它构建低级别的FTP连接...

    java上传文件到ftp.txt

    ### Java上传文件到FTP知识点详解 #### 一、概述 在现代软件开发中,文件传输是一项常见的需求。其中,FTP(文件传输协议)是最常用的一种文件传输方式之一。本篇文章将详细阐述如何利用Java编程语言实现本地文件...

    ftp-rfc959.rar_FTP RFC java_ftp_ftp java_ftp java_java ftp

    以下是使用Java实现FTP的一些关键知识点: 1. **建立连接**:使用`java.net.Socket`类建立与FTP服务器的连接,通常是通过指定服务器地址和端口号(默认21)。 2. **FTP会话管理**:通过`java.io.InputStream`和`...

    javaftp.zip_Java CORBA_ftp java_ftp user.c_java ftp_javascript

    Java FTP相关的知识点主要涉及到网络通信、文件传输以及对象交互。标题中的"javaftp.zip_Java CORBA_ftp java_ftp user.c_java ftp_javascript"暗示了这个压缩包可能包含了一个使用Java实现的FTP(File Transfer ...

    java多线程ftp 上传下载

    以下是一些关于使用Java多线程FTP上传和下载的关键知识点: 1. **FTPClient初始化**:创建`FTPClient`对象,并设置连接参数,如主机名、端口号、用户名和密码。使用`connect()`方法建立与FTP服务器的连接,然后调用...

    ftp.zip_FTP客户端程序_ftp_ftp java_ftp客户端 java_java ftp客户端

    以下是一些关键的Java FTP客户端编程知识点: 1. **FTP连接**:使用`java.net.Socket`类建立与FTP服务器的TCP连接。FTP协议通常基于TCP的21号端口进行通信,控制连接在此端口上建立。 2. **FTP命令**:Java FTP...

    ftp.rar_ftp java_java ftp

    标题 "ftp.rar_ftp java_...以上知识点涵盖了使用Java实现FTP连接和浏览工具的核心概念和技术,适用于开发人员进行相关功能的开发和学习。在实际应用中,还需要根据具体需求进行错误处理、用户体验优化以及性能调整。

    java-ftp-0.92.tar.gz_ftp_ftp java_ftp源码_java ftp

    Java FTP库是用于在Java应用程序中实现文件传输协议(FTP)功能的重要工具。这个"java-ftp-0.92.tar.gz"压缩包包含了FTP客户端的源代码,这对于开发者来说是一个宝贵的资源,可以帮助他们理解FTP协议的工作原理以及...

    JAVA WEB FTP 中文上传工具

    在Java Web环境中,通过FTP进行文件上传通常涉及到以下知识点: 1. **FTP协议原理**:FTP基于TCP/IP协议,分为主动模式和被动模式,用于客户端和服务器之间的文件交换。在主动模式下,服务器主动连接客户端的端口;...

    java编写ftp定时上传下载

    以下将详细讲解这一知识点。 首先,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,它允许用户从远程服务器上下载文件或上传文件到服务器。在Java中,我们可以使用Apache Commons Net库...

    一个java写的FTP搜索引擎

    下面将详细探讨这个Java FTP搜索引擎的相关知识点。 1. **FTP基础**: - FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,允许用户上传、下载或管理远程服务器上的文件。 - FTP搜索引擎则是基于...

Global site tag (gtag.js) - Google Analytics