FTP文件上传
package com.bill99.ftpsvr;
import java.io.FileInputStream; import java.io.IOException;
import sun.net.TelnetInputStream; import sun.net.TelnetOutputStream; import sun.net.ftp.FtpClient; import sun.net.ftp.FtpLoginException;
public class FtpTest {
private final String FTP_IP="127.0.0.1";
private final int FTP_PORT=21;
private String ftpfilePath = "/wf"; //ftp存放文件的目录,表示上传的文件入到根目录下的wf文件夹
private String loginName; //登陆名
private String loginpwd; //密码
private sun.net.ftp.FtpClient ftpclient = null;
/**
* 构造函数
* @param loginName 用户名
* @param loginpwd 密码
*/
public FtpTest(String loginName,String loginpwd){
this.loginName = loginName;
this.loginpwd = loginpwd;
}
/**
* 登陆FTP服务器
* @return true:登陆成功 false:登陆失败
*/
public boolean logonFTP(){
try {
ftpclient = new FtpClient(FTP_IP,FTP_PORT);
ftpclient.login(this.loginName, this.loginpwd);
ftpclient.cd(ftpfilePath);
System.out.println("登陆成功");
} catch(FtpLoginException e) {
System.out.println("无权限连接");
return false;
} catch (IOException e) {
System.out.println("网络异常");
return false;
}
return true;
}
/**
* 上传文件
* @param fileaname 准备上传的文件
*/
public void upFile(String filename) {
System.out.println("开始上传文件...");
TelnetOutputStream ftpout =null;
TelnetInputStream ftpin = null;
try {
ftpclient.binary();
ftpout =
ftpclient.put("upfile.txt");//upfile.txt是上传到ftp服务器后的文件名
ftpin = new TelnetInputStream(new FileInputStream(filename),true);
byte[] mybytes = new byte[1024];
int bufferSize = 0;
while((bufferSize = ftpin.read(mybytes, 0,
mybytes.length))!=-1) {
ftpout.write(mybytes,0,bufferSize);
}
ftpin.close();
ftpout.close();
} catch(IOException e) {
System.out.println("上传文件时发生网络异常");
e.printStackTrace();
return ;
} finally {
try {
ftpin.close();
ftpout.close();
ftpclient.closeServer();
} catch(IOException e){e.printStackTrace();}
}
System.out.println("文件上传成功");
}
public static void main(String[] args) throws IOException{
FtpTest ftp = new FtpTest("test","123456");
boolean isconnected = ftp.logonFTP();
if(isconnected) {
//上传文件
ftp.upFile("E:\\Tool.java");
}
}
}