`
ljs120ljs
  • 浏览: 7679 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java ftp实例

阅读更多
package ftp;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
import sun.net.ftp.FtpLoginException;

public class FileUpdateFTP
{
private FtpClient ftpClient;//ftp
private String  ip;//主机(服务)
private int port;//端口
private String userName;//用户名
private String password;//密码
private String selectPath;//客户端选择路径
private String serverPath;//上传到指定的目录  如果未指定则上传到根目录


/**
* @param ip 主机(服务)
* @param port 端口
* @param userName 用户名
* @param password 密码
* @param selectPath 客户端选择路径
* @param serverPath 上传到服务器指定的目录  如果未指定则上传到根目录
*/
public FileUpdateFTP(String ip, int port, String userName, String password, String selectPath,
String serverPath)
{
super();
this.ip = ip;
this.port = port;
this.userName = userName;
this.password = password;
this.selectPath = selectPath;
this.serverPath = serverPath;
this.setServerPath(serverPath);
}

/**
* 进行服务器连接
* @param ip
* @param port
* @param userName
* @param password
* @param path
* @return
*/
public String connectServer()
{
String msg = "";
try
{
ftpClient = new FtpClient(ip, port);
ftpClient.openServer(ip);
ftpClient.login(userName, password);
ftpClient.binary();
}
catch (FtpLoginException e)
{
msg = "登陆主机:" + ip + "失败!请检查用户名或密码是否正确:" + e;

}
catch (IOException e)
{
msg = "连接主机:" + ip + "失败!请检查端口是否正确:" + e;
}
catch (SecurityException e)
{
msg = "无权限和主机:" + ip + "连接!请检查是否有访问权限:" + e;
}
return msg;
}
/**
* 获取文件及子文件
* @param dirname
* @throws Exception
* @throws Exception
*/
public void getFiles(String dirname) throws Exception
{
File dir = new File(dirname);
//获取所有目录
File[] files = dir.listFiles();
if (files!=null && !"".equals(files))
{
for (int i = 0; i < files.length; i++)
{
if (files[i].isDirectory())
{// 判断是否是目录
//如果服务器上没有这个目录则创建
String tempDir = files[i].getPath().substring(getSelectPath().length()).replace("\\", "/");
tempDir = getServerPath()+tempDir;
if (!isDirExist(tempDir))
{
createDir(tempDir);
}
getFiles(files[i].getPath());
}
/*if (files[i].isHidden())
{// 判断是否是隐藏文件
System.out.println(files[i].getName() + "=>它是一个隐藏文");
}*/
if (files[i].isFile())
{// 判断是否是文件
fileUpdate(files[i]);
}
}
}
}

/**
* 上传文件
* @param file
* @return
*/
public boolean fileUpdate(File file)
{
boolean flag = false;
try
{
ftpClient.cd(this.cheangPath(file.getPath()));
ftpClient.binary();
TelnetOutputStream os = ftpClient.put(file.getName());
FileInputStream is = new FileInputStream(file);
byte[] bytes = new byte[2048];
int c;
while ((c = is.read(bytes)) != -1)
{
os.write(bytes, 0, c);
}
is.close();
os.close();
flag = true;
}
catch (IOException ex)
{
ex.printStackTrace();
}
return flag;
}

/**
* 获取当前的FTP路径
*
* @param path
* @return
*/
private String cheangPath(String path)
{
path = path.substring(getSelectPath().length()).replace("\\", "/");

if ("".equals(path))
{
path = "/";
}
else
{
path = path.substring(0, path.lastIndexOf("/") + 1);
}
return getServerPath()+path;
}
/**
* 创建文件夹
*
* @param dir
* @param ftpClient
* @throws Exception
*/
private void createDir(String dir) throws Exception
{
ftpClient.ascii();
StringTokenizer s = new StringTokenizer(dir, "/"); // sign
s.countTokens();
String pathName = "";
while (s.hasMoreElements())
{

pathName = pathName + "/" + (String) s.nextElement();

try
{
ftpClient.sendServer("MKD " + pathName + "\r\n");
}
catch (Exception e)
{
e = null;
}
ftpClient.readServerResponse();
}
ftpClient.binary();

}
/**
* 检查文件夹是否存在
*
* @param dir
* @param ftpClient
* @return
*/
private Boolean isDirExist(String dir)
{
try
{
ftpClient.cd(dir);
}
catch (Exception e)
{

return false;
}
return true;
}
/**
* 关闭连接
*/
public void closeConnect()
{
try
{
if (ftpClient != null)
{
ftpClient.closeServer();
}
System.out.println("disconnect");
}
catch (IOException ex)
{
System.out.println("not disconnect");
System.out.println(ex);
}
}
public static List<ServerBean> getList()
{
List<ServerBean> serverBeanList= new ArrayList<ServerBean>();
ServerBean serverBean = null;

serverBean = new ServerBean("192.168.1.42", 21, "test", "test", "E:/SinaUC", "c:/SinaUC");
return serverBeanList;
}
public static void main(String[] args)
{
List<ServerBean> serverBeanList = getList();
ServerBean serverBean = null;

int count = 0;
boolean flag = true;
String msg = "";
FileUpdateFTP ftp = null;
for (int i = 0; i < serverBeanList.size(); )
{
count++;
System.out.println(count);

try
{
serverBean = serverBeanList.get(i);
ftp = new FileUpdateFTP(serverBean.getIp(), serverBean.getPort(),
serverBean.getUserName(), serverBean.getPassword(), serverBean.getSelectPath(), serverBean.getServerPath());
msg = ftp.connectServer();

if ("".equals(msg))
{
ftp.getFiles(serverBean.getSelectPath());
count = 0;
i++;
}
else
{
flag = false;
}
}
catch (SocketException e)
{
System.out.println("中途中断"+e);
i++;
count = 0;
flag = true;
}
catch (Exception e) {
System.out.println("连接失败");
}
finally
{
ftp.closeConnect();
}
if (count==3)
{
i++;
count = 0;
flag = true;
}
if (flag)
{
if ("".equals(msg))
{
msg = "操作成功";
}
System.out.println(msg);
}
}
}
public FtpClient getFtpClient()
{
return ftpClient;
}

public void setFtpClient(FtpClient ftpClient)
{
this.ftpClient = ftpClient;
}

public String getIp()
{
return ip;
}

public void setIp(String ip)
{
this.ip = ip;
}

public int getPort()
{
return port;
}

public void setPort(int port)
{
this.port = port;
}

public String getUserName()
{
return userName;
}

public void setUserName(String userName)
{
this.userName = userName;
}

public String getPassword()
{
return password;
}

public void setPassword(String password)
{
this.password = password;
}


public String getSelectPath()
{
return selectPath;
}

public void setSelectPath(String selectPath)
{
this.selectPath = selectPath;
}

public String getServerPath()
{
return serverPath;
}

public void setServerPath(String serverPath)
{
this.serverPath = serverPath.replace("\\", "/");
}


}
分享到:
评论
1 楼 sh747665463 2012-08-27  
getList函数里面的ServerBean是什么啊?

相关推荐

    JavaFtp实例,实现文件下载和读取

    这个简单的Java FTP实例展示了基本的文件下载和读取操作,但在实际应用中,你需要考虑更多细节,比如错误处理、异常管理、连接超时、被动模式设置、文件权限检查等。此外,如果需要处理大量文件或频繁的FTP操作,...

    java ftp服务器实例

    Java FTP服务器实例是一个非常实用的学习资源,特别是对于那些初次接触FTP(文件传输协议)服务器开发的Java程序员。FTP是互联网上一种广泛使用的协议,用于在客户端和服务器之间上传、下载文件。通过Java来实现FTP...

    JAVA开发--FTP例子

    实现 FTPClient 的一些常用功能

    java ftp java ftp

    你可以创建FTPClient实例,并使用它的方法连接到FTP服务器,设置登录凭证,以及执行各种FTP命令。 3. **连接FTP服务器**:使用FTPClient的connect方法连接到FTP服务器,指定服务器地址和端口号。例如: ```java ...

    java实现ftp上传jar包

    Java FTP上传JAR包是一项常见的任务,特别是在自动化部署或者远程更新系统组件时。在这个过程中,我们需要使用Java编程语言,结合FTP(File Transfer Protocol)协议来实现在服务器上上传JAR文件。以下是一些相关的...

    Java的FTP任务代码实例

    【Java FTP任务代码实例】 在Java编程中,FTP(File Transfer Protocol)被广泛用于在网络间传输文件。Apache Commons Net库提供了方便的API来处理FTP任务。以下是一个详细的FTP操作类的实例,它涵盖了连接、登录、...

    java实现FTP服务器

    3. **处理客户端连接**:对于每次连接,服务器创建一个新的`ftpServer`实例,并启动线程处理。 4. **命令解析与响应**: - 用户名与密码验证:接收并验证用户输入的用户名和密码。 - 目录变更:根据`CWD`和`CDUP`...

    Java实现FTP文件上传和下载

    2. **连接服务器**:创建一个FTPClient实例,然后通过`connect()`方法连接到FTP服务器。你需要提供服务器的地址、端口号(默认21)和登录凭证(用户名和密码)。 ```java FTPClient ftpClient = new FTPClient(); ...

    JAVA FTP上传下载实例

    在Java编程中,FTP(File Transfer Protocol)是一个用于在计算机之间传输文件的标准协议。本示例将详细讲解如何使用Java实现FTP的上传和下载功能。首先,我们需要了解FTP客户端库,这里提到了“相关jar包”,这通常...

    java实现Ftp批量下载文件及解压

    在Java编程环境中,FTP(File Transfer Protocol)是一个用于在计算机之间传输文件的标准协议。通过Java实现FTP批量下载文件以及解压的功能,可以极大地提高工作效率,特别是在处理大量数据时。以下是一份详细的步骤...

    java ftp 上传 IIS 展示,代码+文档

    Java FTP(File Transfer Protocol)是Java编程中用于与FTP服务器进行交互的一种技术,它允许开发者在应用程序中实现文件的上传、下载以及管理FTP服务器上的文件。在这个“java ftp 上传 IIS 展示”中,我们关注的是...

    基于Java的FTP客户端源代码

    要创建一个FTP客户端,首先需要导入相关库并创建FTPClient实例: ```java import org.apache.commons.net.ftp.*; FTPClient ftpClient = new FTPClient(); ``` 然后,我们需要连接到FTP服务器: ```java ...

    java ftp 上传 下载 断点续传

    要上传文件到FTP服务器,首先需要创建`FTPClient`实例,然后连接到服务器并登录。接着,设置必要的参数,如文件类型(ASCII或二进制)、传输模式(主动或被动)。最后,调用`storeFile()`方法上传文件。 4. Java ...

    Java FTP程序实例.rar

    Java FTP程序实例,通过FTP连接远程主机,通过FTP服务显示服务器上的文件列表、对文件进行删除和浏览等操作,并可上传和下载FTP服务器上的文件,整体上较简单,只是简单实现了FTP的雏形,一个简单的Java FTP源码小...

    JAVA获取FTP文件列表

    - `FtpClient ftpClient`: 实例化`FtpClient`对象,用于执行FTP命令。 - `private String server`: FTP服务器地址。 - `private int port`: FTP服务器端口,默认通常是21。 - `private String userName`: 用户名。 -...

    java ftp断点上传和下载

    2. **初始化FTPClient**:创建一个FTPClient实例并连接到FTP服务器。设置必要的参数如用户名、密码、连接模式(主动或被动)等。 ```java FTPClient ftpClient = new FTPClient(); ftpClient.connect(server, ...

    基于Java的实例源码-FTP客户端Java类库 ftp4j.zip

    基于Java的实例源码-FTP客户端Java类库 ftp4j.zip

    Java源码包100个设计实例.zip

    Java源码包100个设计实例, 大量 实例,可以作为你的学习设计参考。 实例如下: Applet钢琴模拟程序java源码 Calendar万年历 copass源代码.rar DataBuffer在Java中使用ADO.NET.rar EJB 模拟银行ATM流程及操作源代码 ...

    java实现的ftp文件上传

    它可能包含了创建`FTPClient`实例,连接到FTP服务器,设置登录凭据,改变工作目录,设置传输模式(ASCII或二进制),以及实际的文件上传逻辑。例如,`FTPClient`的`uploadFile()`方法会被用来上传文件到服务器。 2....

    Ftp.rar_Java FTP上传_ftp_java ftp

    Java FTP上传是网络编程中的一个重要领域,主要用于在本地计算机与远程服务器之间传输文件。FTP(File Transfer Protocol)是一种用于在Internet上可靠地传输文件的标准协议。在这个“Ftp.rar”压缩包中,我们找到了...

Global site tag (gtag.js) - Google Analytics