java中带有详细说明的FTP (一)

2014-11-24 08:51:43 · 作者: · 浏览: 3

package jing.upfile;

//java中带有详细说明的FTP,使用sun.net.ftp包下的api
import sun.net.ftp.*;
import sun.net.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
FTP远程命令列表

USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT

PASS PASV STOR REST CWD STAT RMD XCUP OPTS

ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH

REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ

QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT

在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n

ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令

ftpclient.readServerResponse一定要在sendServer后调用

nameList("/test")获取指目录下的文件列表

XMKD建立目录,当目录存在的情况下再次创建目录时报错

XRMD删除目录

DELE删除文件

*

Title: 使用JAVA操作FTP服务器(FTP客户端)


*

Description: 上传文件的类型及文件大小都放到调用此类的方法中去检测,比如放到前台java script中去检测等
* 针对FTP中的所有调用使用到文件名的地方请使用完整的路径名(绝对路径开始)。
*


*

Copyright: Copyright (c) 2005


* @author 欧朝敬
* QQ:35712069
* 手机:13873195792
* @version 1.0
*/

public class FtpUpfile {
private FtpClient ftpclient;
private String ipAddress;
private int ipPort;
private String userName;
private String PassWord;
/**
* 构造函数
* @param ip String 机器IP
* @param port String 机器FTP端口号
* @param username String FTP用户名
* @param password String FTP密码
* @throws Exception
*/
public FtpUpfile(String ip, int port, String username, String password) throws
Exception {
ipAddress = new String(ip);
ipPort = port;
ftpclient = new FtpClient(ipAddress, ipPort);
//ftpclient = new FtpClient(ipAddress);
userName = new String(username);
PassWord = new String(password);
}

/**
* 构造函数
* @param ip String 机器IP,默认端口为21
* @param username String FTP用户名
* @param password String FTP密码
* @throws Exception
*/
public FtpUpfile(String ip, String username, String password) throws
Exception {
ipAddress = new String(ip);
ipPort = 21;
ftpclient = new FtpClient(ipAddress, ipPort);
//ftpclient = new FtpClient(ipAddress);
userName = new String(username);
PassWord = new String(password);
}


/**
* 登录FTP服务器
* @throws Exception
*/
public void login() throws Exception {
ftpclient.login(userName, PassWord);
}

/**
* 退出FTP服务器
* @throws Exception
*/
public void logout() throws Exception {
//用ftpclient.closeServer()断开FTP出错时用下更语句退出
ftpclient.sendServer("QUIT/r/n");
int reply = ftpclient.readServerResponse(); //取得服务器的返回信息
}

/**
* 在FTP服务器上建立指定的目录,当目录已经存在的情下不会影响目录下的文件,这样用以判断FTP
* 上传文件时保证目录的存在目录格式必须以"/"根目录开头
* @param pathList String
* @throws Exception
*/
public void buildList(String pathList) throws Exception {
ftpclient.ascii();
StringTokenizer s = new StringTokenizer(pathList, "/"); //sign
int count = s.countTokens();
String pathName = "";
while (s.hasMoreElements()) {
pathName = pathName + "/" + (String) s.nextElement();
try {
ftpclient.sendServer("XMKD " + pathName + "/r/n");