2013-01-07 47 views
7
URL url = new URL("ftp://user:[email protected]/thefolder/"); 
URLConnection connection = url.openConnection(); 
... 
// List files in folder... 

उपरोक्त की तरह कुछ का उपयोग करके, मैं सोच रहा था कि मैं फ़ोल्डर 'thefolder' के भीतर फ़ाइलों की सूची कैसे प्राप्त कर सकता हूं?यूआरएल कनेक्शन एफ़टीपी सूची फाइल


हाय दोस्तों,

इस मूल प्रश्न से जारी रखते हुए, मैं एक साथ इस सरल FTP कनेक्शन है जो सभी काम करने और अच्छी लग रही है डाल दिया है। यह सभी फ़ाइलों को/live/conf/location में देख सकता है और उन्हें स्थानीय/conf/स्थान पर कॉपी कर सकता है। एकमात्र मुद्दा यह है कि यह फाइलों की प्रतिलिपि बना रहा है लेकिन कोई सामग्री नहीं है। वे सभी 0 केबी और खाली हैं!

क्या कोई भी स्पष्ट रूप से कुछ भी देख सकता है जो फ़ाइल नाम की प्रतिलिपि बना रहा है लेकिन फ़ाइल सामग्री नहीं।

चीयर्स

केपीएस

try { 
    FTPClient ftp = new FTPClient(); 
    ftp.connect("000.000.000.000"); 
    ftp.login("USER", "PASSWORD"); 
    ftp.enterLocalPassiveMode(); 
    ftp.setFileType(FTP.BINARY_FILE_TYPE); 

    FTPFile[] files = ftp.listFiles("/live/conf/"); 
    for (int i=0; i < files.length; i++) { 
     if (files[i].getName().contains(".csv")) { 

      String remoteFile1 = files[i].getName(); 
      File downloadFile1 = new File("/var/local/import/conf/"+files[i].getName()); 
      OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1)); 
      ftp.retrieveFile(remoteFile1, outputStream1); 
      outputStream1.close();     

     } 
    } 
    ftp.disconnect(); 
} catch (SocketException ex) { 
    ex.printStackTrace(); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 
+0

समर्पित एफ़टीपी ग्राहक पुस्तकालयों रहे हैं, तो आप था बेहतर इस का उपयोग, यह बहुत आसान हो जाएगा। – fge

उत्तर

8

जावा SE URLConnection के लिए insuitable है एफ़टीपी होस्ट से फ़ाइलों की एक सूची पुनर्प्राप्त करने का काम। एफ़टीपी के रूप में, यह मूल रूप से केवल एफ़टीपी get या put आदेशों का समर्थन करता है (फ़ाइल पुनर्प्राप्त या अपलोड करें)। यह एफ़टीपी ls कमांड (सूची फाइल) का समर्थन नहीं करता है जिसे आप मूल रूप से ढूंढ रहे हैं, अकेले कई अन्य लोगों को दें।

आपको एफ़टीपी ls कमांड (और कई अन्य) का समर्थन करने वाले तृतीय पक्ष पुस्तकालयों की आवश्यकता है। आमतौर पर इस्तेमाल किया जाने वाला एक Apache Commons NetFtpClient है। इसके javadoc में कैसे जारी करने के लिए प्रदर्शित किया गया है एक ls:

FTPClient f = new FTPClient(); 
f.connect(server); 
f.login(username, password); 
FTPFile[] files = f.listFiles(directory); 
+0

उस, त्वरित, सरल, आसान और काम करने के लिए कूल चीयर्स! – Casper

+0

आपका स्वागत है। – BalusC

1

इस वर्ग मैंने पाया चेक बाहर। यह आपके लिए उठाना है। Class at nsftools.com

उदाहरण होगा:

FTPConnection ftpConnect = new FTPConnection(); 
ftpConnect.connect("ftp.example.com"); 
ftpConnect.login("user","pass"); 

System.out.println(ftpConnect.listFiles()); 
4

आप Apache commons FTPClient

इस्तेमाल कर सकते हैं यह आप के साथ listFiles फोन करने की अनुमति होगी ...

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()); 
     } 
+0

बलुससी के अनुसार - कूल, उसके लिए चीयर्स, त्वरित, सरल, आसान और काम करता है! – Casper