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

FTP

阅读更多
public class FtpUtils {
	
	private FTPClient fc;		//--FTP客户端
	private String ftphost;		//--FTP服务器
	private String ftpuser;		//--用户名
	private String ftppass;		//--密码
	private String ftppath;		//--路径
	private int ftpport;		//--端口
	private int silent;			
	private String pasv;
	private String ftpssl;
	public void setFtpValues(String ftphost, String ftpuser, String ftppass, String ftppath, int ftpport, String ftpssl, int silent, String pasv){
		 this.ftphost = ftphost;
		 this.ftppass = ftppass;
		 this.ftppath = ftppath;
		 this.pasv = pasv;
	     this.ftpport = ftpport;
	     this.ftpuser = ftpuser;
	     this.silent = silent; 
	     this.ftpssl = ftpssl;
	}
	
	/**
	 * 判断FTP服务器是否从在
	 * @return
	 */
	public boolean isEmpty(){
		if(ftphost==null||ftphost.equals("")){
			return true;
		}
		return false;
	}
	
	/**
	 * 连接FTP服务器
	 * @return
	 */
	public String connectToFtpServer(){
        if ((ftphost==null)||(ftphost.equals(""))) return "ftp_service_nameerror";
    	if(fc!=null){ 
	        try {
	    		  fc.disconnect();
	    	 } catch (IOException e) {
	    		  e.printStackTrace();
	    	 }
    	}
    	fc = new FTPClient();
        if(ftpssl.equals("1")){
			SSLServerSocketFactory sslserverfactory = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
			SSLSocketFactory sslfactory = (SSLSocketFactory)SSLSocketFactory.getDefault();
			fc.setServerSocketFactory(sslserverfactory);
			fc.setSocketFactory(sslfactory);
        }
        return connectToServer();
    }
	
	/**
	 * 连接FTP服务器
	 * @return
	 */
	private String connectToServer(){
        try{
        	fc.connect(this.ftphost, this.ftpport);
        	if(!fc.login(ftpuser, ftppass)){
        		return "ftp_service_connect";
        	}
        	if(pasv.equals("1")){
        		fc.pasv();
        	}
        	if(silent!=0){
        		fc.setDataTimeout(silent);
        	}
        	if(!fc.changeWorkingDirectory(ftppath)){
        		return "ftp_directory";
        	}
        }catch(FtpLoginException e){
            return "ftp_connect_access";
        }catch(IOException e){
            return "ftp_connect_fail";
        }catch(SecurityException e){
            return "ftp_noaccess";
        }
        return "";
	}
	
	/**
	 * 测试连接
	 * @return
	 */
    public boolean isConnect(){
    	if(fc==null||!fc.isConnected()){
    		return false;
    	}else{
			try {
				String path = fc.printWorkingDirectory();
				if(path==null){
					return false;
				}
			} catch (IOException e) {
				return false;
			}
			return true;
    	}
    }
    
    /**
     * 关闭FTP连接
     */
    public void closeFtpConnect(){
        if (fc!=null){
            try{
                fc.disconnect();
            }catch(Exception e){
            }finally{
                fc = null;
            }
        }
    }
    
    /**
     * 创建目录
     * @param newdir
     * @return
     */
    public  boolean dftp_mkdir(String newdir){
    	boolean makebool;
		try{
			makebool =  fc.makeDirectory(newdir);
			return makebool;
		}catch(Exception e){
			return false;
		}
    }
    
    /**
     * 删除目录
     * @param newdir
     * @return
     */
    public boolean dftp_rmdir(String newdir){
		try{
			return fc.removeDirectory(newdir);
		}catch(Exception e){
			return false;
		}
    }
    
    /**
     * 删除文件
     * @param newdir
     * @return
     */
    public  boolean dftp_delete(String newdir){
		try{
			fc.changeWorkingDirectory(ftppath);
			return fc.deleteFile(newdir);
		}catch(Exception e){
			return false;
		}
    }
    
    /**
     * 修改权限
     * @param newdir
     * @return
     */
    public boolean dftp_site(String newdir){
    	String  cmd_mkdir= "chmod 0777 "+ftppath+"/"+newdir+"\r\n";  
		try{
			return fc.sendSiteCommand(cmd_mkdir);
		}catch(Exception e){
			return false;
		}
    }
    
    /**
     * 改变工作路径
     * @param dir
     * @return
     */
    public  boolean dftp_chdir(String dir){
    	boolean workboolean;
		try{
			workboolean =   fc.changeWorkingDirectory(dir);
			return workboolean;
		}catch(Exception e){
			return false;
		}
    }
    public boolean isdirwork(String directory){
    	try{
    		String path = fc.printWorkingDirectory();
    		String targetpath = ftppath+"/"+directory;
    		if(targetpath.startsWith(".")){
    			targetpath = targetpath.substring(1);
    		}
    		return targetpath.equals(path);
    	}catch(Exception e){
    		return false;
    	}
    }
    public void cdrootdir(){
    	try {
			fc.changeWorkingDirectory(ftppath);
		} catch (IOException e) {
		}
    }
    public boolean put(String sourcename, String targetname, boolean test, String directory){
    		if(test){
    			connectToServer();
    		}
    		try {
    			if(!test){
    				if(!isdirwork(directory)){
    					if(!fc.changeWorkingDirectory(ftppath)){
    						return false;
    					}
    					if(fc.changeWorkingDirectory(directory)){
    						return false;
    					}
    				}
    			}
    			fc.setBufferSize(3072);
    			fc.setFileType(FTPClient.BINARY_FILE_TYPE);
        		InputStream is = new FileInputStream(sourcename);
        		boolean strore = fc.storeFile(targetname, is);
				is.close();
				return strore;
			} catch (IOException e) {
				e.printStackTrace();
				return false;
			}
    }
    public  boolean get(String local_file,String remote_file){
    		try {
    			fc.setBufferSize(2076);
    			fc.setFileType(FTPClient.BINARY_FILE_TYPE);
    			FileOutputStream os = new FileOutputStream(local_file);
				fc.retrieveFile(remote_file, os);
				os.close();
				return true;
			} catch (IOException e) {
				return false;
			}
    }
    public boolean readfile(String url,OutputStream os){
    	InputStream in=null;
    	URL servletURL =null;
		try {
			servletURL = new URL(url);
			servletURL.openConnection();
			in = servletURL.openStream();
			if(os!=null){
				byte[] bytes=new byte[1024];
	    		int c;
	    		while ((c=in.read(bytes))!=-1){
	    			os.write(bytes,0,c);
	    		}
			}
    		return true;
		} catch (Exception e) {
			return false;
		}finally{
			try{
				if(in!=null){
					in.close();
				}
			}catch(Exception e){}
			servletURL=null;
		}
    }
}
分享到:
评论

相关推荐

    webftp.zip ftp源码

    WebFTP是一种基于Web的FTP(File Transfer Protocol)客户端软件,允许用户通过网页浏览器进行FTP文件传输操作。在本文中,我们将深入探讨FTP的基本概念、WebFTP的工作原理以及它在实际应用中的重要性。 FTP,全称...

    FTP服务器单文件绿色版FTPServer

    FTP服务器是一种用于在互联网上进行文件传输的服务,它允许用户从一台计算机(客户端)向另一台计算机(服务器)上传或下载文件。FTP(File Transfer Protocol)是这项服务的基础协议,它是一个标准网络协议,用于在...

    使用 ftp-srv 在 nodejs 创建FTP服务器,简单版

    FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在计算机之间传输文件。在这个场景中,我们将探讨如何使用Node.js中的`ftp-srv`库来创建一个简单的FTP服务器。`ftp-srv`是一个易于使用的FTP服务器模块...

    传送图片至FTP及显示FTP上图片

    在IT行业中,FTP(File Transfer Protocol)是一种广泛用于在互联网上传输文件的协议。本教程将详细介绍如何将图片传输到FTP服务器以及如何在FTP服务器上显示这些图片。 首先,我们需要理解FTP的基本工作原理。FTP...

    ftp.rar_ftpput_ftpput ftpget_实现ftpget与ftpput功能

    FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络协议,用于在网络上进行文件传输。本文将详细探讨如何实现FTP客户端的两个关键功能:FTPGET(下载文件)和FTPPUT(上传文件),以及这两个功能在实际应用中...

    webFTP一个PHP写的在线FTP文件管理系统

    **webFTP概述** webFTP是一个基于PHP开发的在线FTP文件管理系统,它允许用户通过Web界面进行FTP服务器的文件管理和操作,极大地提升了FTP管理的便捷性和灵活性。作为一个轻量级的解决方案,webFTP使得用户无需安装...

    QT5.0实现FTP服务器

    FTP(File Transfer Protocol)是一种标准网络协议,用于在计算机网络上在客户端和服务器之间传输文件。在QT5.0中实现FTP服务器,可以让我们自定义一个能够处理文件上传和下载的服务,这对于开发文件管理或共享应用...

    麒麟V10服务器搭建FTP服务

    麒麟V10服务器搭建FTP服务 FTP(File Transfer Protocol)是一种常用的文件传输协议,麒麟V10服务器搭建FTP服务可以帮助用户快速搭建FTP服务器,实现文件的上传、下载和共享。本文将指导用户如何在麒麟V10服务器上...

    详解ftp创建文件权限问题

    详解ftp创建文件权限问题 一、问题 有一个这样的需求,admin为一个Linux为其FTP应用创建的一个有权限限制的用户,通过admin用户可以进行登录FTP服务,登录FTP服务后,创建文件夹,该文件夹的用户和用户组都是admin,...

    一个FTP客户端

    如果用本FTP客户端登录某个FTP服务器,则先必须申请一个FTP空间,申请FTP空间时,它会给你一个FTP主机地址、用户名称、用户密码。 测试步骤: 1、项目编译并运行。 2、申请一个FTP空间(这里不讨论)。 3、输入FTP...

    ftp4j-一个开源的支持代理的FTP组件

    ftp4j是个很年轻的开源项目,但是试用后发现很好很强大,如果你找一个纯java的FTP库,要支持socks4,socks4a,socks5,http代理,就是他了! 比apache的FTPClient(不支持代理)、半商业的edtFTPj(PRO支持代理,...

    ftp批量上传文件bat

    实现FTP批量上传文件到指定目录功能的bat脚本: @echo off @echo delete iplist.txt @del iplist.txt @setlocal EnableDelayedExpansion @echo create upload iplist.... @for /L %%i in (51,1,52) do ( @echo ...

    FTP开源代码 C++

    FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。在这个开源代码库中,我们关注的是C++实现的FTP客户端或服务器端的代码,这为理解和学习FTP工作原理提供了宝贵资源。 首先,...

    QT5.0实现FTP客户端

    2. **QNAM与FTP**:虽然QNetworkAccessManager没有直接提供FTP操作的接口,但可以通过构造一个QNAM的子类并重写其内部的槽函数,来监听FTP相关的信号,从而实现FTP客户端功能。 3. **QNetworkRequest**:创建...

    FTP服务器绿色单文件中文免费版(FTPserver)

    FTP服务器绿色单文件中文免费版(FTPserver) FTPserver这是一款免费的、绿色的(无需安装,只有一个文件)、小巧的(84KB)的FTP服务器软件。可以轻松地将它放在U盘里,邮箱里,网盘里,或者网站上随时下载,这样,就有了...

    FTP Utility 2.0 日文

    FTP Utility 2.0 是一款由柯尼卡美能达公司开发的日文版FTP客户端工具,主要用于方便用户在计算机和远程服务器之间传输文件。这款软件适用于企业或个人,特别是那些需要频繁进行文件上传和下载的用户。通过FTP ...

    FTP被动模式分析,ftp抓包分析

    FTP 的两种不同工作模式:PORT(主动模式)与PASV(被动模式) 1、首先,我们要了解,FTP 工作的时候,需要用到两个连接:控制连接与数据连接,控制 连接专门用于FTP 控制命令及命令执行信息传送;数据连接专门用于...

    FTP客户端绿色版安装包

    FTP客户端绿色版安装包是一种无需正式安装即可使用的文件传输协议(FTP)客户端工具。FTP是Internet上用于在不同计算机之间交换文件的标准协议,而“绿色版”指的是这种软件不需通过传统的安装步骤,只需解压即可...

    Andftp pro 已付费

    《Andftp Pro:安卓FTP传输神器的深度解析》 在当今移动设备高度发达的时代,文件传输的需求日益增长,尤其是在IT行业内。Andftp pro是一款专为安卓用户设计的专业FTP(File Transfer Protocol)传输工具,它以其...

Global site tag (gtag.js) - Google Analytics