zoukankan      html  css  js  c++  java
  • java操作Ftp文件的一些方式(一)

    public class FtpUtil {
    	private  Log log = LogFactory.getLog(getClass()) ;
    	
    	private String userName; 
    	private String password;
    	private String ip; 
    	private int port; 
    	
    	private FTPClient ftpClient = null; 
    	private FTPSClient ftps = null ;
    	
    	//构造方法初始化类
    	public FtpUtil(String userName, String password, String ip, int port) {
    		this.userName = userName;
    		this.password = password;
    		this.ip = ip;
    		this.port = port;
    	}
            //连接ftp
    	public boolean connectServer() throws Exception{
    		boolean flag = true;
    		if (ftpClient == null) { 
    			ftpClient = new FTPClient();
    			ftpClient.connect(ip,port);
    			
    			log.info("Connected to " + ip);
    			log.info(ftpClient.getReplyString());
    			
    			int reply = ftpClient.getReplyCode(); 
    			if (!FTPReply.isPositiveCompletion(reply)) {
    				ftpClient.disconnect();
    				log.warn("FTP server refused connection.");
    				return false ;
    			}
    			
    			boolean bok = ftpClient.login(userName, password);
    			if (!bok)  {
    				try {
    					ftpClient.disconnect() ;
    					ftpClient = null ;
    				} catch (Exception e) { }
    				throw new Exception("can not login ftp server") ;
    			}
    			
    			ftpClient.setBufferSize(1024);
    			ftpClient.setControlEncoding("GBK"); 
    			ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
    			ftpClient.setDataTimeout(120000); 
    			ftpClient.enterLocalPassiveMode();
    			ftpClient.setUseEPSVwithIPv4(false);
    		} 
    		return flag;
    	}
            //列出所有文件内容
    	public List<String> listRemoteAllFiles(String path) throws Exception {	
    		ftpClient.enterLocalPassiveMode(); 
    		FTPFile[] files = ftpClient.listFiles(path, new FTPFileFilter() { 
    			@Override
    			public boolean accept(FTPFile file) { 
    				if (file.isFile()) return true ;
    				return false ;
    			}}) ;
    		
    		List<String> list = new ArrayList() ;
    		for (FTPFile file : files) {
    			list.add(file.getName()) ;
    		}
    		return list ;
    	}
    
    	public void closeConnect() { 
    		try {
    			if (ftpClient != null) {
    				ftpClient.logout();
    				ftpClient.disconnect();
    			}
    		} catch (Exception e) {
    		}
    
    	}
            //下载文件
    	public boolean downloadFile(String remotePath, String fileName, String localPath) throws Exception {
    		
    		FileOutputStream fos = null ; 
    		try {
    			File localFile = new File(localPath, fileName);
    			fos = new FileOutputStream(localFile);
    			
    			ftpClient.enterLocalPassiveMode(); 
    			ftpClient.changeWorkingDirectory(remotePath) ;
    			boolean bok = ftpClient.retrieveFile(fileName, fos);
    			
    			fos.close() ;
    			fos = null ;
    			
    			return bok ;
    		} catch (Exception e) {
    			throw e ;
    		}
    		finally {
    			if (fos!=null) {
    				try {
    					fos.close() ;
    					fos = null ;
    				} catch (Exception e2) { }
    			}
    		} 
    		
    	}
            //上传文件
    	public boolean uploadFile(String remotePath, String filename, String localFilePath) throws Exception {
    		FileInputStream fis = null ;
    		try {
    			fis = new FileInputStream(new File(localFilePath));
    			
    			ftpClient.enterLocalPassiveMode(); 
    			ftpClient.changeWorkingDirectory(remotePath);
    			boolean bok = ftpClient.storeFile(filename, fis); 
    			
    			fis.close();
    			fis = null ;
    			
    			return bok ;
    		} catch (Exception e) {
    			throw e ;
    		}
    		finally {
    			if (fis!=null) {
    				try {
    					fis.close() ;
    					fis = null ;
    				} catch (Exception e2) { }
    			}
    		}
    
    	}
    	//删除文件
    	public boolean removeFile(String remotePath, String filename) throws Exception {
    		ftpClient.changeWorkingDirectory(remotePath);
    		boolean bok = ftpClient.deleteFile(filename) ; 
    		return bok ;
    	}
    
    }
  • 相关阅读:
    关于JAVA的线程问题
    Java 对JTextField添加回车响应
    Failed to install *.apk on device 'emulator-5554': timeout .
    静态属性
    类与对象的实例属性

    面向对象2
    面向对象设计
    re模块,主要用来查询
    xml对标签操作,
  • 原文地址:https://www.cnblogs.com/gaoxuewei/p/6646700.html
Copyright © 2011-2022 走看看