这是偶第一次写java程序实现公司要求的FTP数据同步,所有原代码如下,以供各位参考并提出宝贵意见!另外俺还有两个功能没有实现,有请高手指点一二:1、如何删除FTP服务器上已经下载过的文件?2、如何将上传的文件改名?上传时在文件名前加“temp_”,上传完毕后需要把文件名改回来。3、如何使用openPassiveDataConnection()方法将ftp连接更改为主动连接,因为要从unix系统配置的ftp服务器下载文件的话,就需要主动连接。 
******************************************************************************************************* 
Create date: 2004-08-30 
Use: connect to FTP server,then upload and download file 
Modify date: 2004-09-05 add to upload file 
2004-09-13 add to download file 
Copy right: Magisky Media Technology Co.,Ltd. 
*/ 
//import cz.dhl.io.*; 
//import cz.dhl.ftp.*; 
import sun.net.ftp.*; 
import sun.net.*; 
import java.applet.*; 
import java.io.*; 
import java.io.IOException; 
import java.util.StringTokenizer; 
import sun.net.ftp.FtpClient; 
import java.util.ArrayList; 
FtpClient aftp; 
DataOutputStream outputs ; 
TelnetInputStream ins; 
TelnetOutputStream outs; 
String hostname=""; 
private String path = "/"; 
String hostname = "192.168.0.56"; 
int port = 2121; 
String uid = "lee"; 
String pwd = "lee"; 
String RWFileDir = "D:\\smsftp\\";//文件目录 
ftp ft = new ftp(); 
ft.connect(RWFileDir,hostname,port,uid,pwd); 
if (ft.aftp != null){ 
try { 
ft.getNameList(RWFileDir); 
}catch(IOException e) 
{ 
System.out.println("下载文件出错:"+e); 
} 
} 
//上传文件 
if (ft.aftp != null){ 
String sdir = RWFileDir + "subunsubfromsp\\"; 
File fdir = new File(sdir); 
String FileName = ""; 
//System.out.println("成功上传的文件:"); 
//ft.showFileContents("subunsubfromsp\\"); 
} 
// ft.deleFile(RWFileDir); 
ft.stop(RWFileDir); 
{ 
this.hostname = hostname; 
System.out.println("正在连接"+hostname+",请等待....."); 
try{ 
aftp = new FtpClient(hostname,port); 
aftp.login(uid,pwd); 
aftp.binary(); 
//aftp.openPortDataConnection(); 
a = "连接主机:"+hostname+"成功!"; 
System.out.println(a); 
} 
catch(FtpLoginException e){ 
a="登陆主机:"+hostname+"失败!请检查用户名或密码是否正确:"+e; 
System.out.println(a); 
//return false; 
} 
catch (IOException e){ 
a="连接主机:"+hostname+"失败!请检查端口是否正确:"+e; 
System.out.println(a); 
//return false; 
} 
catch(SecurityException e) 
{ 
a="无权限与主机:"+hostname+"连接!请检查是否有访问权限:"+e; 
System.out.println(a); 
//return false; 
} 
} 
String message = ""; 
try { 
if(aftp!=null){ 
aftp.closeServer(); 
message = "与主机"+hostname+"连接已断开!"; 
System.out.println(message); 
log(RWFileDir,message); 
} 
} 
catch(IOException e) 
{ 
message = "与主机"+hostname+"断开连接失败!"+e; 
System.out.println(message); 
log(RWFileDir,message); 
} 
} 
public boolean downloadFile(String RWFileDir,String filepathname){ 
boolean result=true; 
String message = ""; 
if (aftp != null) 
{ 
System.out.println("正在下载文件"+filepathname+",请等待...."); 
String badfile = filepathname.substring(filepathname.length()-4,filepathname.length()); 
String badlog = filepathname.substring(filepathname.length()-7,filepathname.length()); 
String baddir = ""; 
if ((badfile.compareTo(".bad") != 0) && (badlog.compareTo(".badlog") != 0)){ 
baddir = "subunsubtosp\\"; 
} 
else{ 
baddir = "bad\\"; 
} 
String strdir = "subunsubtosp\\"; 
//System.out.println(RWFileDir + baddir + filepathname); 
try{ 
//FtpClient fc=new FtpClient("192.168.0.56",2121); 
//fc.login("lee","lee"); 
int ch; 
File fi = new File(RWFileDir + baddir + filepathname); 
//aftp.cd(strdir); 
RandomAccessFile getFile = new RandomAccessFile(fi,"rw"); 
getFile.seek(0); 
TelnetInputStream fget=aftp.get(strdir+filepathname); 
DataInputStream puts = new DataInputStream(fget); 
while ((ch = puts.read()) >= 0) { 
getFile.write(ch); 
//s.delete(); 
//fc.closeServer(); 
log(RWFileDir,message); 
} 
catch(IOException e){ 
message = "下载"+filepathname+"文件到"+baddir +"目录失败!"+e; 
System.out.println(message); 
log(RWFileDir,message); 
result = false ; 
} 
else{ 
result = false; 
} 
return result; 
} 
public boolean uploadFile(String RWFileDir,String filepathname){ 
boolean result=true; 
String message = ""; 
if (aftp != null) 
{ 
System.out.println("正在上传文件"+filepathname+",请等待...."); 
int index = filepathname.lastIndexOf(fg); 
String filename = filepathname.substring(index+1); 
File localFile = new File(filepathname) ; 
sendFile.seek(0); 
//改名上传temp_ 
filename = filename.substring(0,15)+"temp_"+filename.substring(15,filename.length()); 
outs = aftp.put(filename); 
outputs = new DataOutputStream(outs); 
while (sendFile.getFilePointer() < sendFile.length() ) 
{ 
ch = sendFile.read(); 
outputs.write(ch); 
} 
sendFile.close(); 
log(RWFileDir,message); 
} 
catch(IOException e){ 
message = "上传"+filepathname+"文件失败!"+e; 
System.out.println(message); 
log(RWFileDir,message); 
result = false ; 
} 
else{ 
result = false; 
} 
return result; 
} 
File New = new File(newName); //newName 
//aftp.renameTo(New); 
//boolean Old.renameTo(File newName); 
//System.out.println(Old); 
//System.out.println(New); 
//try { 
//取得ReadFile目录下的txt文件 
String sdir = RWFileDir + "subunsubfromsp\\"; 
File fdir = new File(sdir); 
String FileName = ""; 
int j = fdir.list().length; 
for(int i=0;i { 
//删除subunsubfromsp中的txt文件 
FileName = RWFileDir + "subunsubfromsp\\" + (fdir.list())[0]; 
file = new File(FileName); 
file.delete(); 
System.out.println("已经成功删除"+FileName+"文件!"); 
} 
/
大型手机资讯类网站! https://www.134shouji.com