关于ftp的使用

  这是实习期间第二次写随笔,通过这种方式来总结自己这段时间所学的东西,希望能帮助到。

  FTP是文件传输协议,用于Internet上的控制文件的双向传输。也就是说,eclipse中的程序可以将本地的文件以及远程的文件相互连通,可以上传也可以下载。

 就以上传为例,这里写部分代码,

public UploadStatus upload(FTPClient ftpclient,String localFilePath,String remoteFilePath) throws IOException{

//必须要写的,这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数

//据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。

ftpclient.enterLocalPassiveMode();

ftpclient.setFileType(FTP.BINARY_FILE_TYPE);//设定二进制传输

ftpclient.setControlEncoding(DEFAULT_REMOTE_CHARSET);

UploadStatus result;//上传状态对象

String remoteFileName = remoteFilepath;//远程文件路径

//分解远程路径,获得完整路径

if(remoteFileName.contains("/"){

remoteFileName = remoteFilePath.subString(remoteFilePath.lastIndexOf("/")+1);

}

FTPFile[] files = ftpClient.listFiles(new String(remoteFileName.getBytes(DEFAULT_REMOTE_CHARSET),DAFAULT_LOCAL_CHARSET));//

if(files.length==1){

long remotesize = file[0].getSize();

File f = new File(localFilePath);

long localsize = f.getSize();

if(remotesize == localsize){

//文件已经在本地存在,返回一个值

}else if( remotesize>localsize){

//文件不用上传,返回一个值

}

//(String,File,FTPClient,long)上传文件

result = uploadFile(remoteFileName,f,ftpClient,remoteSize);

}

//上传失败,则删除远程文件后再上传一遍

if(result==UploadStatus.Upload_From_Break_Failed){

if(!ftpClient.deleteFile(remoteFileName)){

 return UploadStatus.Delete_Remote_Failed;

}

result = uploadFile(remoteFilePath,f,fileClient,0);

}

}else{

//uploadFile方法不写了

result = uploadFile(remoteFileName.noew file(localFilePath,ftpClient,0);

}

return result;

}

posted on 2015-09-17 13:38  bamaofan  阅读(680)  评论(0编辑  收藏  举报