java实现ftp的几种方式java实现ftp的几种方式.docx
- 文档编号:27281958
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:16
- 大小:20.26KB
java实现ftp的几种方式java实现ftp的几种方式.docx
《java实现ftp的几种方式java实现ftp的几种方式.docx》由会员分享,可在线阅读,更多相关《java实现ftp的几种方式java实现ftp的几种方式.docx(16页珍藏版)》请在冰豆网上搜索。
java实现ftp的几种方式java实现ftp的几种方式
java实现ftp的几种方式(第3方包)
最近在做ssh,sftp。
顺便总结一下java实现ftp的几种方式。
.StringTokenizer;
publicclassFtpUpfile{
privateFtpClientftpclient;
privateStringipAddress;
privateintipPort;
privateStringuserName;
privateStringPassWord;
/**
*构造函数
*@paramipString机器IP
*@paramportString机器FTP端口号
*@paramusernameStringFTP用户名
*@parampasswordStringFTP密码
*@throwsException
*/
publicFtpUpfile(Stringip,intport,Stringusername,Stringpassword)throws
Exception{
ipAddress=newString(ip);
ipPort=port;
ftpclient=newFtpClient(ipAddress,ipPort);
//ftpclient=newFtpClient(ipAddress);
userName=newString(username);
PassWord=newString(password);
}
/**
*构造函数
*@paramipString机器IP,默认端口为21
*@paramusernameStringFTP用户名
*@parampasswordStringFTP密码
*@throwsException
*/
publicFtpUpfile(Stringip,Stringusername,Stringpassword)throws
Exception{
ipAddress=newString(ip);
ipPort=21;
ftpclient=newFtpClient(ipAddress,ipPort);
//ftpclient=newFtpClient(ipAddress);
userName=newString(username);
PassWord=newString(password);
}
/**
*登录FTP服务器
*@throwsException
*/
publicvoidlogin()throwsException{
ftpclient.login(userName,PassWord);
}
/**
*退出FTP服务器
*@throwsException
*/
publicvoidlogout()throwsException{
//用ftpclient.closeServer()断开FTP出错时用下更语句退出
ftpclient.sendServer("QUIT\r\n");
intreply=ftpclient.readServerResponse();//取得服务器的返回信息
}
/**
*在FTP服务器上建立指定的目录,当目录已经存在的情下不会影响目录下的文件,这样用以判断FTP
*上传文件时保证目录的存在目录格式必须以"/"根目录开头
*@parampathListString
*@throwsException
*/
publicvoidadServerResponse();
}
ftpclient.binary();
}
/**
*取得指定目录下的所有文件名,不包括目录名称
*分析nameList得到的输入流中的数,得到指定目录下的所有文件名
*@paramfullPathString
*@returnArrayList
*@throwsException
*/
publicArrayListfileNames(StringfullPath)throwsException{
ftpclient.ascii();//注意,使用字符模式
TelnetInputStreamlist=ftpclient.nameList(fullPath);
byte[]names=newbyte[2048];
intbufsize=0;
bufsize=list.read(names,0,names.length);//从流中读取
list.close();
ArrayListnamesList=newArrayList();
inti=0;
intj=0;
while(i //charbc=(char)names; //System.out.println(i+" "+bc+": "+(int)names); //i=i+1; if(names[i]==10){//字符模式为10,二进制模式为13 //文件名在数据中开始下标为j,i-j为文件名的长度,文件名在数据中的结束下标为i-1 //System.out.write(names,j,i-j); //System.out.println(j+" "+i+" "+(i-j)); StringtempName=newString(names,j,i-j); namesList.add(tempName); //System.out.println(temp); //处理代码处 //j=i+2;//上一次位置二进制模式 j=i+1;//上一次位置字符模式 } i=i+1; } returnnamesList; } /** *上传文件到FTP服务器,destination路径以FTP服务器的"/"开始,带文件名、 *上传文件只能使用二进制模式,当文件存在时再次上传则会覆盖 *@paramsourceString *@paramdestinationString *@throwsException */ publicvoidupFile(Stringsource,Stringdestination)throwsException{ buildList(destination.substring(0,destination.lastIndexOf("/"))); ftpclient.binary();//此行代码必须放在buildList之后 TelnetOutputStreamftpOut=ftpclient.put(destination); TelnetInputStreamftpIn=newTelnetInputStream(new FileInputStream(source),true); byte[]buf=newbyte[204800]; intbufsize=0; while((bufsize=ftpIn.read(buf,0,buf.length))! =-1){ ftpOut.write(buf,0,bufsize); } ftpIn.close(); ftpOut.close(); } ush(); ftpOut.close(); } /** *从FTP文件服务器上下载文件SourceFileName,到本地destinationFileName *所有的文件名中都要求包括完整的路径名在内 *@paramSourceFileNameString *@paramdestinationFileNameString *@throwsException */ publicvoiddownFile(StringSourceFileName,StringdestinationFileName)throws Exception{ ftpclient.binary();//一定要使用二进制模式 TelnetInputStreamftpIn=ftpclient.get(SourceFileName); byte[]buf=newbyte[204800]; intbufsize=0; FileOutputStreamftpOut=newFileOutputStream(destinationFileName); while((bufsize=ftpIn.read(buf,0,buf.length))! =-1){ ftpOut.write(buf,0,bufsize); } ftpOut.close(); ftpIn.close(); } /** *从FTP文件服务器上下载文件,输出到字节数组中 *@paramSourceFileNameString *@returnbyte[] *@throwsException */ publicbyte[]downFile(StringSourceFileName)throws Exception{ ftpclient.binary();//一定要使用二进制模式 TelnetInputStreamftpIn=ftpclient.get(SourceFileName); ByteArrayOutputStreambyteOut=newByteArrayOutputStream(); byte[]buf=newbyte[204800]; intbufsize=0; while((bufsize=ftpIn.read(buf,0,buf.length))! =-1){ byteOut.write(buf,0,bufsize); } byte[]return_arraybyte=byteOut.toByteArray(); byteOut.close(); ftpIn.close(); returnreturn_arraybyte; } /**调用示例 *FtpUpfilefUp=newFtpUpfile("192.150.189.22",21,"admin","admin"); *fUp.login(); *fUp.buildList("/adfadsg/sfsdfd/cc"); *Stringdestination="/test.zip"; *fUp.upFile("C: \\DocumentsandSettings\\Administrator\\MyDocuments\\sample.zip",destination); *ArrayListfilename=fUp.fileNames("/"); *for(inti=0;i * System.out.println(filename.get(i).toString()); *} *fUp.logout(); *@paramargsString[] *@throwsException */ publicstaticvoidmain(String[]args)throwsException{ FtpUpfilefUp=newFtpUpfile("172.16.0.142",22,"ivr","ivr"); fUp.login(); /* fUp.buildList("/adfadsg/sfsdfd/cc"); Stringdestination="/test/SetupDJ.rar"; fUp.upFile( "C: \\DocumentsandSettings\\Administrator\\MyDocuments\\SetupDJ.rar", destination); ArrayListfilename=fUp.fileNames("/"); for(inti=0;i System.out.println(filename.get(i).toString()); } fUp.downFile("/sample.zip","d: \\sample.zip"); */ FileInputStreamfin=newFileInputStream( "d: \\wapPush.txt"); byte[]data=newbyte[20480000]; fin.read(data,0,data.length); fUp.upFile(data,"/home/cdr/wapPush.txt"); fUp.logout(); System.out.println("程序运行完成! "); /*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删除文件 */ } } packagecom.ftp; p.FTPFile; import.ftp.FTPFileEntryParser; import.TelnetInputStream; publicclassFtpAppache{ publicFtpAppache()throwsException{ //.ftp.FtpClientft=null; // TelnetInputStreamt=ft.list(); //t.setStickyCRLF(true); } publicvoidtest1()throwsException{ // StringstrTemp=""; //InetAddressia=InetAddress.getByName("192.168.0.193"); FTPClientftp=newFTPClient(); ftp.connect("172.16.0.142",22); booleanblogin=ftp.login("ivr","ivr"); if(! blogin){ System.out.println("连接失败"); (); ftp=null; return; } /*//如果是中文名必需进行字符集转换 booleanbMakeFlag=ftp.makeDirectory(newString("测试目录".getBytes( "gb2312"),"iso-8859-1"));//在服务器创建目录 //上传文件到服务器,目录自由创建 Filefile=newFile("c: \\test.properties"); ftp.storeFile("test.properties",newFileInputStream(file));*/ System.out.println(SystemName()); FTPFile[]ftpFiles=(); if(ftpFiles! =null){ for(inti=0;i System.out.println(ftpFiles[i].getName()); //System.out.println(ftpFiles[i].isFile()); if(ftpFiles[i].isFile()){ FTPFileftpf=newFTPFile(); /*System.err.println(ftpf.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.EXECUTE_PERMISSION)); System.err.println("READ_PERMISSION="+ftpf.hasPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION)); System.err.println("EXECUTE_PERMISSION="+ftpf.hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实现 ftp 方式