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是一种基于Web的FTP(File Transfer Protocol)客户端软件,允许用户通过网页浏览器进行FTP文件传输操作。在本文中,我们将深入探讨FTP的基本概念、WebFTP的工作原理以及它在实际应用中的重要性。 FTP,全称...
FTP服务器是一种用于在互联网上进行文件传输的服务,它允许用户从一台计算机(客户端)向另一台计算机(服务器)上传或下载文件。FTP(File Transfer Protocol)是这项服务的基础协议,它是一个标准网络协议,用于在...
FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在计算机之间传输文件。在这个场景中,我们将探讨如何使用Node.js中的`ftp-srv`库来创建一个简单的FTP服务器。`ftp-srv`是一个易于使用的FTP服务器模块...
在IT行业中,FTP(File Transfer Protocol)是一种广泛用于在互联网上传输文件的协议。本教程将详细介绍如何将图片传输到FTP服务器以及如何在FTP服务器上显示这些图片。 首先,我们需要理解FTP的基本工作原理。FTP...
FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络协议,用于在网络上进行文件传输。本文将详细探讨如何实现FTP客户端的两个关键功能:FTPGET(下载文件)和FTPPUT(上传文件),以及这两个功能在实际应用中...
**webFTP概述** webFTP是一个基于PHP开发的在线FTP文件管理系统,它允许用户通过Web界面进行FTP服务器的文件管理和操作,极大地提升了FTP管理的便捷性和灵活性。作为一个轻量级的解决方案,webFTP使得用户无需安装...
FTP(File Transfer Protocol)是一种标准网络协议,用于在计算机网络上在客户端和服务器之间传输文件。在QT5.0中实现FTP服务器,可以让我们自定义一个能够处理文件上传和下载的服务,这对于开发文件管理或共享应用...
麒麟V10服务器搭建FTP服务 FTP(File Transfer Protocol)是一种常用的文件传输协议,麒麟V10服务器搭建FTP服务可以帮助用户快速搭建FTP服务器,实现文件的上传、下载和共享。本文将指导用户如何在麒麟V10服务器上...
详解ftp创建文件权限问题 一、问题 有一个这样的需求,admin为一个Linux为其FTP应用创建的一个有权限限制的用户,通过admin用户可以进行登录FTP服务,登录FTP服务后,创建文件夹,该文件夹的用户和用户组都是admin,...
如果用本FTP客户端登录某个FTP服务器,则先必须申请一个FTP空间,申请FTP空间时,它会给你一个FTP主机地址、用户名称、用户密码。 测试步骤: 1、项目编译并运行。 2、申请一个FTP空间(这里不讨论)。 3、输入FTP...
ftp4j是个很年轻的开源项目,但是试用后发现很好很强大,如果你找一个纯java的FTP库,要支持socks4,socks4a,socks5,http代理,就是他了! 比apache的FTPClient(不支持代理)、半商业的edtFTPj(PRO支持代理,...
实现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(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。在这个开源代码库中,我们关注的是C++实现的FTP客户端或服务器端的代码,这为理解和学习FTP工作原理提供了宝贵资源。 首先,...
2. **QNAM与FTP**:虽然QNetworkAccessManager没有直接提供FTP操作的接口,但可以通过构造一个QNAM的子类并重写其内部的槽函数,来监听FTP相关的信号,从而实现FTP客户端功能。 3. **QNetworkRequest**:创建...
FTP服务器绿色单文件中文免费版(FTPserver) FTPserver这是一款免费的、绿色的(无需安装,只有一个文件)、小巧的(84KB)的FTP服务器软件。可以轻松地将它放在U盘里,邮箱里,网盘里,或者网站上随时下载,这样,就有了...
FTP Utility 2.0 是一款由柯尼卡美能达公司开发的日文版FTP客户端工具,主要用于方便用户在计算机和远程服务器之间传输文件。这款软件适用于企业或个人,特别是那些需要频繁进行文件上传和下载的用户。通过FTP ...
FTP 的两种不同工作模式:PORT(主动模式)与PASV(被动模式) 1、首先,我们要了解,FTP 工作的时候,需要用到两个连接:控制连接与数据连接,控制 连接专门用于FTP 控制命令及命令执行信息传送;数据连接专门用于...
FTP客户端绿色版安装包是一种无需正式安装即可使用的文件传输协议(FTP)客户端工具。FTP是Internet上用于在不同计算机之间交换文件的标准协议,而“绿色版”指的是这种软件不需通过传统的安装步骤,只需解压即可...
《Andftp Pro:安卓FTP传输神器的深度解析》 在当今移动设备高度发达的时代,文件传输的需求日益增长,尤其是在IT行业内。Andftp pro是一款专为安卓用户设计的专业FTP(File Transfer Protocol)传输工具,它以其...