當前位置:首頁 » 文件管理 » ftpjar包下載

ftpjar包下載

發布時間: 2022-12-27 19:28:30

javaftp伺服器需要什麼jar包

apache的包:commons-net.jar
主要使用到的類:
org.apache.commons.net.ftp.FTPClient;
org.apache.commons.net.ftp.FTPFile;
org.apache.commons.net.ftp.FTPReply;

JDK中也有自帶的ftp包:
sun.net.ftp.下有FTP操作類
但sun已經不建議使用了, 建議樓主使用apache的包

⑵ 使用FTPClient下載文件報錯解決了嗎

Unix環境下用shell腳本調jar包中的程序,FTP讀取主機文件,用ftpClient中的方法,下面的方法報錯了

FTPFile[] ftpFileArr = ftp.listFiles(remoteCheckDir +
File.separator + checkFileName);
其中remoteCheckDir + File.separator + checkFileName為文件的絕對路徑

⑶ FtpClient

當時我用SUN 的FtpClient.get()方法下載文件是有問題的,我推薦你用org.apache.commons.net.ftp.FTPClient下載文件,可以解決中文文件下載問題,你可以去我博客里看看哦:http://hi..com/renliangli/blog/item/6ccb6b3a049d95c9d46225a5.html,文章摘給你吧:
現在就來看下我解決的代碼吧,希望對遇到同樣問題的人有點幫助。

1)把ftp地址中的文件保存到本地的java類源碼

package test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

public class Ftp {

/**
* Description: 從FTP伺服器下載文件
* @param ip FTP伺服器的ip地址
* @param port FTP伺服器埠,默認為:21
* @param username FTP登錄賬號
* @param password FTP登錄密碼
* @param remotePath FTP伺服器上的相對路徑
* @param fileName 要下載的文件名
* @param localPath 下載後保存到本地的路徑
* @return
*/
public static boolean downFile(String ip, int port,String username, String password, String remotePath,String fileName,String localPath) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(ip, port);
//下面三行代碼必須要,而且不能改變編碼格式,否則不能正確下載中文文件
ftp.setControlEncoding("GBK");
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh");

//如果採用默認埠,可以使用ftp.connect(url)的方式直接連接FTP伺服器
ftp.login(username, password);//登錄
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}

ftp.changeWorkingDirectory(remotePath);//轉移到FTP伺服器目錄
FTPFile[] fs = ftp.listFiles();

for(int i = 0; i < fs.length; i++){
FTPFile ff = fs[i];
if(ff.getName().equals(fileName)){

File localFile = new File(localPath+File.separator+ff.getName());
//
OutputStream is = new FileOutputStream(localFile);

//注意此處retrieveFile的第一個參數由GBK轉為ISO-8859-1編碼。否則下載後的文件內容為空。
//原因可能是由於aix系統默認的編碼為ISO-8859-1
ftp.retrieveFile(new String(ff.getName().getBytes("GBK"),"ISO-8859-1"), is);
is.close();
}
}

ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Ftp.downFile("10.32.166.144", 21, "test", "test", "/flashfxp", "激活碼.txt", "C:");

}

}

2)將ftp資源以文件流的方式打開,由用戶決定保存在本地何處,程序運行後可以從IE跳出框中打開或者保存的Action代碼,利用Struts1寫的:

/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.mocha.test;

import java.io.IOException;

import java.io.OutputStream;

import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class DownloadAction extends Action{

/** *//**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
* @throws IOException
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException{

OutputStream os=null;

try {

os = response.getOutputStream();

response.reset();

downFile("10.32.166.144", 21, "test", "test", "/flashfxp", "激活碼.txt",os,response);

} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try{
os.close();

} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return null;

}

/**
* Description: 從FTP伺服器下載文件
* @param ip FTP伺服器ip地址
* @param port FTP伺服器埠,默認為21
* @param username FTP登錄賬號
* @param password FTP登錄密碼
* @param remotePath 附件在FTP伺服器上的絕對路徑
* @param fileName 要下載的文件名
* @param outputStream 輸出流
* @param response
* @return
*/
public static boolean downFile(String ip, int port,String username, String password, String remotePath
,String fileName,OutputStream outputStream,HttpServletResponse response) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(ip, port);
//下面三行代碼必須要,而且不能改變編碼格式
ftp.setControlEncoding("GBK");
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh");

//如果採用默認埠,可以使用ftp.connect(url)的方式直接連接FTP伺服器
ftp.login(username, password);//登錄
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}

ftp.changeWorkingDirectory(remotePath);//轉移到FTP伺服器目錄
FTPFile[] fs = ftp.listFiles();

for(int i = 0; i < fs.length; i++){
FTPFile ff = fs[i];
if(ff.getName().equals(fileName)){

String filename = fileName;
//這個就就是彈出下載對話框的關鍵代碼
response.setHeader("Content-disposition",
"attachment;filename=" +
URLEncoder.encode(filename, "utf-8"));
//將文件保存到輸出流outputStream中
ftp.retrieveFile(new String(ff.getName().getBytes("GBK"),"ISO-8859-1"), outputStream);
outputStream.flush();
outputStream.close();
}
}

ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
}

差點忘了利用ftpclient要用到的jar包了,呵呵,就這兩個了:commons-net-1.4.1.jar、jakarta-oro-2.0.8.jar

對了我用的jdk是1.4的。所以commons-net-1.4.1.jar用了這個版本比較老的。

⑷ entp_ftp-1.0.jar怎麼用

通過ApacheFtpServer實現,依賴以下jar包:
commons-net-ftp-2.0.jar
ftpserver-core-1.0.6.jar
log4j-1.2.14.jar
mina-core-2.0.4.jar
slf4j-api-1.5.2.jar
slf4j-log4j12-1.5.2.jar
資源下載地址 http://download.csdn.net/detail/smile3670/8508525

⑸ 對JAVA的兩個FTP包進行比較分析

ftp *;

這是一個不被官方支持的 但是放在JDK下面的FTP包 正因為不被支

持 所以沒有官方提供API 這是其最大的缺陷之一 最重要由於不是官方支持的

所以文檔也是沒有的

[url]l[/url]

這里有該包的API

先給一個簡單的例子 (例子來源互聯網)

)顯示FTP伺服器上的文件

void ftpList_actionPerformed(ActionEvent e) {

String server=serverEdit getText();//輸入的FTP伺服器的IP地址

String user=userEdit getText(); file://登/錄FTP伺服器的用戶名

String password=passwordEdit getText();//登錄FTP伺服器的用戶名的口令

String path=pathEdit getText();//FTP伺服器上的路徑

try {

FtpClient ftpClient=new FtpClient();//創建FtpClient對象

ftpClient openServer(server);//連接FTP伺服器

ftpClient login(user password);//登錄FTP伺服器

if (path length()!= ) ftpClient cd(path);

TelnetInputStream is=ftpClient list();

int c;

while ((c=is read())!= ) {

System out print((char) c);}

is close();

ftpClient closeServer();//退出FTP伺服器

} catch (IOException ex) {;}

}

)從FTP伺服器上下傳一個文件

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()!= ) 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[ ];

int c;

while ((c=is read(bytes))!= ) {

os write(bytes c);

}

is close();

os close();

ftpClient closeServer();

} catch (IOException ex) {;}

}

)向FTP伺服器上上傳一個文件

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()!= ) 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[ ];

int c;

while ((c=is read(bytes))!= ){

os write(bytes c);}

is close();

os close();

ftpClient closeServer();

} catch (IOException ex) {;}

}

}

看了這個例子 應該就能用他寫東西了

這個包缺點很多 首先就是不被支持也不被官方推薦使用

其次是這個包功能過於簡單 簡單到無法區分FTP伺服器上的File是文件還是目錄 有人說

通過返回的字元串來判斷 但是據說FTP在不同系統下返回的東西不大一樣 所以如果通過

判斷字元串會有不好移植的問題

自己想出了一個辦法 通過FtpClient中的cd方法來判斷

代碼如下

try{

ftp cd(file);//file為當前判斷的文件

//如果過了說明file是目錄

}

catch(IOException e){

//說明file是文件

}

finally{

ftp cd( );//返回上級目錄繼續判斷下一文件

}

我用這種方法做過嘗試 結果是只能判斷正確一部分 有些目錄仍會被認做文件 不知道

是我的方法有錯還是別的什麼原因

如果對FTP服務沒有過高的要求 使用這個包還是不錯的 因為他本身就包含在JDK中 不

存在CLASSPATH的問題 不需要導入外部包 較為方便

ftp *;

這個包在Jakarta Commons Net library里 現在的最高版本是 可以從以下地址

下載

[url] net [/url]

zip

裡麵包含了打包好的jar API 及全部的class文件

[url] net [/url]

src zip

這里包含一些例子以及全部的代碼

給出一個該包的例子

import ftp *;

public static void getDataFiles( String server

String username

String password

String folder

String destinationFolder

Calendar start

Calendar end )

{

try

{

// Connect and logon to FTP Server

FTPClient ftp = new FTPClient();

nnect( server );

ftp login( username password );

System out println( Connected to +

server + );

System out print(ftp getReplyString());

// List the files in the directory

ftp changeWorkingDirectory( folder );

FTPFile[] files = ftp listFiles();

System out println( Number of files in dir: + files length );

DateFormat df = DateFormat getDateInstance( DateFormat SHORT );

for( int i= ; i

{

Date fileDate = files[ i ] getTimestamp() getTime();

if( pareTo( start getTime() ) >= &&

pareTo( end getTime() ) <= )

{

// Download a file from the FTP Server

System out print( df format( files[ i ] getTimestamp() getTime() ) );

System out println( + files[ i ] getName() );

File file = new File( destinationFolder +

File separator + files[ i ] getName() );

FileOutputStream fos = new FileOutputStream( file );

ftp retrieveFile( files[ i ] getName() fos );

fos close();

file setLastModified( fileDate getTime() );

}

}

// Logout from the FTP Server and disconnect

ftp logout();

ftp disconnect();

}

catch( Exception e )

{

e printStackTrace();

}

}

同 ftp相同 都是先建立FtpClient(注意兩包的大小寫不同)的實例 然後通過

connect()方法連接 login()方法登陸 但是 ftp *明顯比sun

net ftp功能強大很多

ftp *包將FTP中的file單獨出來成為了一個新類FTPFile 還有

類FTPFileEntryParser parse 沒有仔細研究 但是從字面來看應該是轉化為某種形勢的

類 有待研究

同時這個mons net jar包中也提供了FTP伺服器 telnet mail等一系列類庫

ftp *包的缺點在於需要設置classpath 並且需要下載jakarta

oro jar這個包才能運行(如果沒有這個包 會在ftp listFiles()方法後拋出找不

到class異常) 此包無須在代碼中import 只需設置在classpath中即可 下載地址

[url] oro zip[/url]

如果想要強大的FTP服務 那麼 ftp *包應該是你的最好選擇 而

且也是開源 免費的

這個包的問題是:

使用Jakarta Commons Net library需要在環境變數裡面編輯classpath

這是不方便的地方

lishixin/Article/program/Java/hx/201311/27057

⑹ 求每日定時在伺服器的FTP上取數據文件的源碼(JAVA)

這個是可以向伺服器端發送文字的程序,就是在客戶端發送一句hello在伺服器也可以接受到hello,這個程序可以修改一下就可以了。具體修改方法是增加一個定時器,然後把字元流改成位元組流,現在有點忙,你先研究啊,近兩天幫你寫寫看。
伺服器端:
import java.net.*;
import java.io.*;

public class DateServer {
public static void main(String[] args) {
ServerSocket server=null;

try{
server=new ServerSocket(6666);
System.out.println(
"Server start on port 6666...");
while(true){
Socket socket=server.accept();
new SocketHandler(socket).start();
/*
PrintWriter out=new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()
)
);
out.println(new java.util.Date().toLocaleString());
out.close();
*/
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(server!=null) {
try{
server.close();
}catch(Exception ex){}
}
}
}
}

class SocketHandler extends Thread {
private Socket socket;
public SocketHandler(Socket socket) {
this.socket=socket;
}
public void run() {
try{
PrintWriter out=new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()
)
);
out.println(
new java.util.Date().
toLocaleString());
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
客戶端:
package com.briup;

import java.io.*;
import java.net.*;

public class FtpClient {
public static void main(String[] args) {
if(args.length==0) {
System.out.println("Usage:java FtpClient file_path");
System.exit(0);
}
File file=new File(args[0]);
if(!file.exists()||!file.canRead()) {
System.out.println(args[0]+" doesn't exist or can not read.");
System.exit(0);
}

Socket socket=null;

try{
socket=new Socket(args[1],Integer.parseInt(args[2]));
BufferedInputStream in=new BufferedInputStream(
new FileInputStream(file)
);
BufferedOutputStream out=new BufferedOutputStream(
socket.getOutputStream()
);
byte[] buffer=new byte[1024*8];
int i=-1;
while((i=in.read(buffer))!=-1) {
out.write(buffer,0,i);
}
System.out.println(socket.getInetAddress().getHostAddress()+" send file over.");
in.close();
out.close();
}catch(Exception e){
e.printStackTrace();
}finally{
if(socket!=null) {
try{
socket.close();
}catch(Exception ex){}
}
}
}
}

⑺ java 下載異地FTP中的zip文件

好像需要一個支持jar包把,把ftp4j的下載地址貼出來

⑻ java中怎麼實現ftp文件傳輸

packagecom.quantongfu.ftp.ftp;

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.net.ServerSocket;
importjava.util.List;

importorg.apache.commons.net.ftp.FTPReply;
importorg.apache.log4j.Logger;
importorg.apache.log4j.net.SocketServer;

importcom.quantongfu.conf.FtpConf;

/**
*@項目名稱:telinSyslog
*@文件名稱:Ftp.java
*@創建日期:2015年9月14日下午3:22:08
*@功能描述:ftp實體類,用於連接,上傳
*@修訂記錄:
*/
publicclassFtp{
privatestaticLoggerlogger=Logger.getLogger(Ftp.class);
privateFTPClientftp;

/**
*
*@parampath
*上傳到ftp伺服器哪個路徑下
*@paramaddr
*地址
*@paramport
*埠號
*@paramusername
*用戶名
*@parampassword
*密碼
*@return
*@throwsException
*/
publicbooleanconnect()throwsException{
booleanresult=false;
ftp=newFTPClient();
intreply;
ftp.connect(FtpConf.FTP_HOST,FtpConf.FTP_PORT);
ftp.login(FtpConf.FTP_USER_NAME,FtpConf.FTP_PASSWORD);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.setDataTimeout(60000);
reply=ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){
ftp.disconnect();
returnresult;
}
if(FtpConf.IS_FTP_DIRECTORY){
ftp.changeWorkingDirectory(FtpConf.FTP_DIRECTORY);
}
result=true;
returnresult;
}

/**
*
*@paramfiles
*上傳的文件
*@throwsException
*/
publicbooleanupload(Filefile)throwsIOException{
FileInputStreaminput=null;
try{
input=newFileInputStream(file);
booleanb=ftp.storeFile(file.getName()+".tmp",input);
if(b){
b=ftp.rename(file.getName()+".tmp",file.getName());
}
returnb;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}finally{
if(input!=null){
input.close();
}
}
}

/**
*
*@paramfiles
*上傳的文件
*@throwsException
*/
publicbooleanupload(ServerSocketserver,Filefile)throwsException{
FileInputStreaminput=null;
try{
if(!file.exists()){
returntrue;
}
input=newFileInputStream(file);
booleanb=ftp.storeFile(server,file.getName()+".tmp",input);
if(b){
b=ftp.rename(file.getName()+".tmp",file.getName());
if(b){
file.delete();
}
}
returnb;
}catch(Exceptione){
logger.error("ftperror"+e.getMessage());
returnfalse;
}finally{
if(input!=null){
try{
input.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
/*斷開連接*/
publicvoiddisConnect(){
try{
if(ftp!=null){
ftp.disconnect();
}
}catch(IOExceptione){
e.printStackTrace();
}

}
/*獲取連接*/
publicstaticFtpgetFtp(){
Ftpftp=newFtp();
try{
ftp.connect();
}catch(Exceptione){
logger.error("FTP連接異常"+e.getMessage());
e.printStackTrace();
}
returnftp;
}
/*重連*/
publicFtpreconnect(){
disConnect();
returngetFtp();
}
}

使用Apache FtpClient jar包,獲取jar : http://commons.apache.org/net/

⑼ 用java實現FTP需要導入什麼包,導入哪裡呢,能不能改個包

com.jcraft.jsch_0.1.31.jar,commons-net-3.2.jar。這是我實現FTP上傳使用的jar,希望對你有用。

熱點內容
編譯正確運行後沒有輸出就結束了 發布:2025-08-23 03:12:26 瀏覽:888
fanuc存儲卡 發布:2025-08-23 03:12:19 瀏覽:383
俠盜飛車安卓哪裡下 發布:2025-08-23 03:02:24 瀏覽:753
沈陽java培訓 發布:2025-08-23 02:56:03 瀏覽:972
安卓2千以下買什麼備用機好 發布:2025-08-23 02:54:38 瀏覽:144
ftp文件共享軟體 發布:2025-08-23 02:34:13 瀏覽:583
php圖片等比縮放 發布:2025-08-23 02:32:40 瀏覽:646
資料庫配置文件jsp 發布:2025-08-23 02:21:22 瀏覽:454
介面地址和伺服器地址是一個么 發布:2025-08-23 02:21:21 瀏覽:767
iphone的證書在哪個文件夾 發布:2025-08-23 02:21:13 瀏覽:540