這個要做定時任務(wù)的,ftp不可能主動給你發(fā),只能自己每隔多長時間就去檢索一次,應(yīng)該把ftp文件目錄結(jié)構(gòu)和文件名稱全部存入數(shù)據(jù)庫,在下載時候?qū)ξ募臉俗R狀態(tài)位進行更新,方便于對文件的判斷。然后從ftp下載文件即可。如果需要連接ftp下載文件的代碼,可以發(fā)送郵件到JavaWebDevelop@hotmial.com
成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計、網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設(shè)計師團隊。
以下是這三部分的JAVA源程序: (1)顯示FTP服務(wù)器上的文件 void ftpList_actionPerformed(ActionEvent e) {String server=serverEdit.getText();//輸入的FTP服務(wù)器的IP地址 String user=userEdit.getText();//登錄FTP服務(wù)器的用戶名 String password=passwordEdit.getText();//登錄FTP服務(wù)器的用戶名的口令 String path=pathEdit.getText();//FTP服務(wù)器上的路徑 try {FtpClient ftpClient=new FtpClient();//創(chuàng)建FtpClient對象 ftpClient.openServer(server);//連接FTP服務(wù)器 ftpClient.login(user, password);//登錄FTP服務(wù)器 if (path.length()!=0) ftpClient.cd(path); TelnetInputStream is=ftpClient.list(); int c; while ((c=is.read())!=-1) { System.out.print((char) c);} is.close(); ftpClient.closeServer();//退出FTP服務(wù)器 } catch (IOException ex) {;} } (2)從FTP服務(wù)器上下傳一個文件 void getButton_actionPerformed(ActionEvent e) { String server=serverEdit.getText(); String user=userEdit.getText(); String password=passwordEdit.getText(); String path=pathEdit.getText(); String filename=filenameEdit.getText(); try { FtpClient ftpClient=new FtpClient(); ftpClient.openServer(server); ftpClient.login(user, password); if (path.length()!=0) ftpClient.cd(path); ftpClient.binary(); TelnetInputStream is=ftpClient.get(filename); File file_out=new File(filename); FileOutputStream os=new FileOutputStream(file_out); byte[] bytes=new byte[1024]; int c; while ((c=is.read(bytes))!=-1) { os.write(bytes,0,c); } is.close(); os.close(); ftpClient.closeServer(); } catch (IOException ex) {;} } (3)向FTP服務(wù)器上上傳一個文件 void putButton_actionPerformed(ActionEvent e) { String server=serverEdit.getText(); String user=userEdit.getText(); String password=passwordEdit.getText(); String path=pathEdit.getText(); String filename=filenameEdit.getText(); try { FtpClient ftpClient=new FtpClient(); ftpClient.openServer(server); ftpClient.login(user, password); if (path.length()!=0) ftpClient.cd(path); ftpClient.binary(); TelnetOutputStream os=ftpClient.put(filename); File file_in=new File(filename); FileInputStream is=new FileInputStream(file_in); byte[] bytes=new byte[1024]; int c; while ((c=is.read(bytes))!=-1){ os.write(bytes,0,c);} is.close(); os.close(); ftpClient.closeServer(); } catch (IOException ex) {;} } }
public?static?void?downloadFileFtp(KmConfig?kmConfig,String?fileName,?String?clientFileName,?OutputStream?outputStream){
try?{
String?ftpHost?=?kmConfig.getFtpHost();
int?port?=?kmConfig.getFtpPort();
String?userName?=?kmConfig.getFtpUser();
String?passWord?=?kmConfig.getFtpPassword();
String?path?=?kmConfig.getFtpPath();
FtpClient?ftpClient?=?new?FtpClient(ftpHost,?port);//?ftpHost為FTP服務(wù)器的IP地址,port為FTP服務(wù)器的登陸端口,ftpHost為String型,port為int型。
ftpClient.login(userName,?passWord);//?userName、passWord分別為FTP服務(wù)器的登陸用戶名和密碼
ftpClient.binary();
ftpClient.cd(path);//?path為FTP服務(wù)器上保存上傳文件的路徑。
try?{
TelnetInputStream?in?=?ftpClient.get(fileName);
byte[]?bytes?=?new?byte[1024];
int?cnt=0;
while?((cnt=in.read(bytes,0,bytes.length))?!=?-1)?{
outputStream.write(bytes,?0,?cnt);
}
//##############################################
//這里文件就已經(jīng)下載完了,自己理解一下
//#############################################
outputStream.close();
in.close();
}?catch?(Exception?e)?{
ftpClient.closeServer();
e.printStackTrace();
}
ftpClient.closeServer();
}?catch?(Exception?e)?{
System.out.println("下載文件失??!請檢查系統(tǒng)FTP設(shè)置,并確認FTP服務(wù)啟動");
}
}
檢查一下是否timeout時間設(shè)置過短。不要設(shè)置內(nèi)存或者處理器限制。 還有在IIS的metabase數(shù)據(jù)庫中找一下FTP的設(shè)置,在那里找配置文件修改最直接。
通過CFtpFileFind 得到文件的URL之后,然后通過CHttpFile::QueryInfo 得到文件大小。
求采納為滿意回答。