2010-04-26 18 views
32

क्या कोई मुझे बता सकता है कि निम्न कोड में क्या गलत है? मैंने अलग-अलग मेजबानों, एफ़टीपी क्लाइंट कॉनफिग्स की कोशिश की, यह फ़ायरफ़ॉक्स/फाइलज़िला के माध्यम से ठीक से सुलभ है ... समस्या यह है कि मुझे हमेशा बिना किसी अपवाद के फाइल रिक्त फ़ाइल सूची मिलती है (files.length == 0)। मैं मेवेन के साथ स्थापित कॉमन्स-नेट-2.1.jar का उपयोग करता हूं।अपाचे कॉमन्स नेट एफ़टीपी क्लाइंट और सूचीफाइल()

FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_L8); 

    FTPClient client = new FTPClient(); 
    client.configure(config); 

    client.connect("c64.rulez.org"); 
    client.login("anonymous", "anonymous"); 
    client.enterRemotePassiveMode(); 

    FTPFile[] files = client.listFiles(); 
    Assert.assertTrue(files.length > 0); 
+0

किसी भी त्रुटि संदेश? सुनिश्चित नहीं है कि आपकी समस्या क्या है! – Guillaume

+0

समस्या यह है कि मैं हमेशा किसी भी अपवाद के बिना खाली फ़ाइललिस्ट प्राप्त करता हूं (files.length == 0)। प्रश्न अपडेट किया गया है। –

+0

यह मेरे एफ़टीपी सर्वर पर ठीक काम करता है, सिवाय इसके कि मैं क्लाइंट.कॉन्फिगर (...) – Guillaume

उत्तर

75

यह मिला!

बात आप चाहते हैं निष्क्रिय मोड में प्रवेश करने के बाद आप कनेक्ट है, लेकिन इससे पहले कि आप लॉग इन करें। आपका कोड मेरे लिए कुछ भी नहीं देता है, लेकिन यह मेरे लिए काम करता है:

import org.apache.commons.net.ftp.FTPClient; 
import java.io.IOException; 
import org.apache.commons.net.ftp.FTPFile; 

public class BasicFTP { 

    public static void main(String[] args) throws IOException { 
     FTPClient client = new FTPClient(); 
     client.connect("c64.rulez.org"); 
     client.enterLocalPassiveMode(); 
     client.login("anonymous", ""); 
     FTPFile[] files = client.listFiles("/pub"); 
     for (FTPFile file : files) { 
      System.out.println(file.getName()); 
     } 
    } 
} 

मुझे इस उत्पादन देता है:

 
c128 
c64 
c64.hu 
incoming 
plus4 
+0

धन्यवाद। मैंने इस समस्या को एक और lib का उपयोग करके हल किया। –

+1

(बीटीडब्ल्यू टिप्पणी के बारे में: 'Assert.assertTrue' जुनीट या टेस्टएनजी से है; जावा का जोर केवल' जोर दे 'होगा। वैसे भी, मुझे लगता है कि बिंदु सिर्फ प्रश्न के पाठकों को वांछित परिणाम को चित्रित करना था।) – Jonik

+0

@ जोनिक ओह , ये सही है। मैं ध्यान नहीं दे रहा था। मैंने उस बिट को हटा दिया। – PapaFreud

3

आमतौर पर annonymous उपयोगकर्ता एक पासवर्ड की जरूरत नहीं है, कोशिश

client.login("anonymous", ""); 
2

केवल का उपयोग enterLocalPassiveMode() मेरे लिए काम नहीं किया।

मैंने निम्नलिखित कोड का उपयोग किया, जो काम करता था।

ftpsClient.execPBSZ(0); 
    ftpsClient.execPROT("P"); 
    ftpsClient.type(FTP.BINARY_FILE_TYPE); 

पूरा उदाहरण के लिए, के रूप में नीचे है

FTPSClient ftpsClient = new FTPSClient();   

    ftpsClient.connect("Host", 21); 

    ftpsClient.login("user", "pass"); 

    ftpsClient.enterLocalPassiveMode(); 

    ftpsClient.execPBSZ(0); 
    ftpsClient.execPROT("P"); 
    ftpsClient.type(FTP.BINARY_FILE_TYPE); 

    FTPFile[] files = ftpsClient.listFiles(); 

    for (FTPFile file : files) { 
     System.out.println(file.getName()); 
    } 
+0

विधियों को नहीं ढूंढ सकता: ftpClient.execPBSZ (0); ftpClient.execPROT ("पी") – user3871754

+0

क्या आप FTPClient या FTPSClient का उपयोग कर रहे हैं? वे विधियां केवल FTPSClient में मौजूद हैं। –

संबंधित मुद्दे