Java利用apache ftp工具实现文件上传下载和删除功能
利用apacheftp工具实现文件的上传下载和删除,具体如下
1、下载相应的jar包
commons-net-1.4.1.jar
2、实现代码如下:
publicclassFtpUtils{
//ftp服务器地址
publicStringhostname="192.168.1.249";
//ftp服务器端口号默认为21
publicIntegerport=21;
//ftp登录账号
publicStringusername="root";
//ftp登录密码
publicStringpassword="123";
publicFTPClientftpClient=null;
/**
*初始化ftp服务器
*/
publicvoidinitFtpClient(){
ftpClient=newFTPClient();
ftpClient.setControlEncoding("utf-8");
try{
System.out.println("connecting...ftp服务器:"+this.hostname+":"+this.port);
ftpClient.connect(hostname,port);//连接ftp服务器
ftpClient.login(username,password);//登录ftp服务器
intreplyCode=ftpClient.getReplyCode();//是否成功登录服务器
if(!FTPReply.isPositiveCompletion(replyCode)){
System.out.println("connectfailed...ftp服务器:"+this.hostname+":"+this.port);
}
System.out.println("connectsuccessfu...ftp服务器:"+this.hostname+":"+this.port);
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
/**
*上传文件
*@parampathnameftp服务保存地址
*@paramfileName上传到ftp的文件名
*@paramoriginfilename待上传文件的名称(绝对地址)*
*@return
*/
publicbooleanuploadFile(Stringpathname,StringfileName,Stringoriginfilename){
booleanflag=false;
InputStreaminputStream=null;
try{
System.out.println("开始上传文件");
inputStream=newFileInputStream(newFile(originfilename));
initFtpClient();
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
CreateDirecroty(pathname);
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.storeFile(fileName,inputStream);
inputStream.close();
ftpClient.logout();
flag=true;
System.out.println("上传文件成功");
}catch(Exceptione){
System.out.println("上传文件失败");
e.printStackTrace();
}finally{
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(null!=inputStream){
try{
inputStream.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returntrue;
}
/**
*上传文件
*@parampathnameftp服务保存地址
*@paramfileName上传到ftp的文件名
*@paraminputStream输入文件流
*@return
*/
publicbooleanuploadFile(Stringpathname,StringfileName,InputStreaminputStream){
booleanflag=false;
try{
System.out.println("开始上传文件");
initFtpClient();
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
CreateDirecroty(pathname);
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.storeFile(fileName,inputStream);
inputStream.close();
ftpClient.logout();
flag=true;
System.out.println("上传文件成功");
}catch(Exceptione){
System.out.println("上传文件失败");
e.printStackTrace();
}finally{
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(null!=inputStream){
try{
inputStream.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returntrue;
}
//改变目录路径
publicbooleanchangeWorkingDirectory(Stringdirectory){
booleanflag=true;
try{
flag=ftpClient.changeWorkingDirectory(directory);
if(flag){
System.out.println("进入文件夹"+directory+"成功!");
}else{
System.out.println("进入文件夹"+directory+"失败!开始创建文件夹");
}
}catch(IOExceptionioe){
ioe.printStackTrace();
}
returnflag;
}
//创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建
publicbooleanCreateDirecroty(Stringremote)throwsIOException{
booleansuccess=true;
Stringdirectory=remote+"/";
//如果远程目录不存在,则递归创建远程服务器目录
if(!directory.equalsIgnoreCase("/")&&!changeWorkingDirectory(newString(directory))){
intstart=0;
intend=0;
if(directory.startsWith("/")){
start=1;
}else{
start=0;
}
end=directory.indexOf("/",start);
Stringpath="";
Stringpaths="";
while(true){
StringsubDirectory=newString(remote.substring(start,end).getBytes("GBK"),"iso-8859-1");
path=path+"/"+subDirectory;
if(!existFile(path)){
if(makeDirectory(subDirectory)){
changeWorkingDirectory(subDirectory);
}else{
System.out.println("创建目录["+subDirectory+"]失败");
changeWorkingDirectory(subDirectory);
}
}else{
changeWorkingDirectory(subDirectory);
}
paths=paths+"/"+subDirectory;
start=end+1;
end=directory.indexOf("/",start);
//检查所有目录是否创建完毕
if(end<=start){
break;
}
}
}
returnsuccess;
}
//判断ftp服务器文件是否存在
publicbooleanexistFile(Stringpath)throwsIOException{
booleanflag=false;
FTPFile[]ftpFileArr=ftpClient.listFiles(path);
if(ftpFileArr.length>0){
flag=true;
}
returnflag;
}
//创建目录
publicbooleanmakeDirectory(Stringdir){
booleanflag=true;
try{
flag=ftpClient.makeDirectory(dir);
if(flag){
System.out.println("创建文件夹"+dir+"成功!");
}else{
System.out.println("创建文件夹"+dir+"失败!");
}
}catch(Exceptione){
e.printStackTrace();
}
returnflag;
}
/***下载文件*
*@parampathnameFTP服务器文件目录*
*@paramfilename文件名称*
*@paramlocalpath下载后的文件路径*
*@return*/
publicbooleandownloadFile(Stringpathname,Stringfilename,Stringlocalpath){
booleanflag=false;
OutputStreamos=null;
try{
System.out.println("开始下载文件");
initFtpClient();
//切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
FTPFile[]ftpFiles=ftpClient.listFiles();
for(FTPFilefile:ftpFiles){
if(filename.equalsIgnoreCase(file.getName())){
FilelocalFile=newFile(localpath+"/"+file.getName());
os=newFileOutputStream(localFile);
ftpClient.retrieveFile(file.getName(),os);
os.close();
}
}
ftpClient.logout();
flag=true;
System.out.println("下载文件成功");
}catch(Exceptione){
System.out.println("下载文件失败");
e.printStackTrace();
}finally{
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(null!=os){
try{
os.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnflag;
}
/***删除文件*
*@parampathnameFTP服务器保存目录*
*@paramfilename要删除的文件名称*
*@return*/
publicbooleandeleteFile(Stringpathname,Stringfilename){
booleanflag=false;
try{
System.out.println("开始删除文件");
initFtpClient();
//切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
ftpClient.dele(filename);
ftpClient.logout();
flag=true;
System.out.println("删除文件成功");
}catch(Exceptione){
System.out.println("删除文件失败");
e.printStackTrace();
}finally{
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnflag;
}
publicstaticvoidmain(String[]args){
FtpUtilsftp=newFtpUtils();
//ftp.uploadFile("ftpFile/data","123.docx","E://123.docx");
//ftp.downloadFile("ftpFile/data","123.docx","F://");
ftp.deleteFile("ftpFile/data","123.docx");
System.out.println("ok");
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。