2013-01-22 40 views
6

तो मेरे पास यह FTP सर्वर फ़ोल्डरों और फ़ाइलों के समूह के साथ है।जावा: किसी FTP सर्वर से फ़ाइल एक्सेस करना

मेरे कार्यक्रम को इस सर्वर तक पहुंचने, सभी फ़ाइलों को पढ़ने और उनके डेटा को प्रदर्शित करने की आवश्यकता है।

विकास उद्देश्यों के लिए मैं अपने हार्ड ड्राइव पर फ़ाइलों के साथ काम कर रहा हूं, ठीक है "src" फ़ोल्डर में।

लेकिन अब जब सर्वर ऊपर है और चल रहा है, तो मुझे सॉफ़्टवेयर को कनेक्ट करने की आवश्यकता है।

असल में मैं जो करना चाहता हूं उसे सर्वर पर किसी विशेष फ़ोल्डर में फ़ाइलों की एक सूची प्राप्त होती है।

यह वही है मैं अब तक है:

URL url = null; 
File folder = null; 
try { 
    url = new URL ("ftp://username:[email protected]/server"); 
    folder = new File (url.toURI()); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
data = Arrays.asList(folder.listFiles(new FileFilter() { 
    public boolean accept(File file) { 
     return file.isDirectory(); 
    } 
})); 

लेकिन मैं त्रुटि मिलती है "URI योजना 'फ़ाइल' नहीं है।"

मैं समझता हूँ कि इस वजह से मेरे यूआरएल के साथ शुरू होता: और नहीं "फ़ाइल:" "एफ़टीपी //"

हालांकि मैं यह पता लगाने की क्या मैं इसके बारे में क्या करना चाहिए हूँ प्रतीत नहीं कर सकते हैं!

शायद इसके बारे में जाने का बेहतर तरीका है?

URL url = new URL ("ftp://username:[email protected]/server"); 
URLConnection urlc = url.openConnection(); 
InputStream is = urlc.getInputStream(); 
... 

एक वैकल्पिक FTPClientApache Commons Net से जो कई प्रोटोकॉल के लिए समर्थन के रूप में विचार करें:

+0

संपादित तुम्हें क्या लगता है 'File' निर्माता एक' फ़ाइल के अलावा और कुछ संभाल होता है: 'यूआरएल? – parsifal

+0

और इस सवाल को कई बार पूछा गया है; शायद अन्य उत्तरों में से एक आपकी मदद करेगा: http://stackoverflow.com/search?q=[java]+Accessing+a+File+from+an+FTP+Server – parsifal

+0

क्या आप सहायक, या सनकी होना चाहते हैं? मैं उम्मीद कर रहा था। बात यह है कि मुझे फाइलों की एक सूची चाहिए। मुझे इस बारे में जाने का कोई और तरीका नहीं पता है। –

उत्तर

7

File वस्तुओं एक FTP कनेक्शन को संभाल नहीं कर सकते हैं, आप का उपयोग करने के लिए एक URLConnection की जरूरत है। यहां एक FTP list files example है।

+0

URLConnection के बारे में बात यह है कि मैं केवल इससे इनपुट इनपुट प्राप्त कर सकता हूं।मुझे लगता है कि InputStream का उपयोग करते हैं सकता है तो, फ़ाइलों की एक सूची प्राप्त करने के लिए सुनिश्चित करें ... –

+0

उदाहरण को देखते हुए, लाइन 13 पर यह कहते हैं 'client.connect (" ftp.server.com ");' लेकिन मैं कोई त्रुटि मिलती है जब मैं इसे आज़माता हूं, तो यह कहता है कि यह विधि FTP क्लाइंट के लिए अपरिभाषित है। –

+0

कि विधि [निश्चित रूप से वहाँ] है (http://commons.apache.org/net/api-3.2/org/apache/commons/net/SocketClient.html#connect (java.lang.String))। क्या आपके पास सही आयात है? – Reimeus

3

यदि आप फ़ाइल के साथ यूआरआई का उपयोग करते हैं तो आप अपने कोड का उपयोग कर सकते हैं, लेकिन जब आप ftp का उपयोग करना चाहते हैं तो आपको इस तरह के कोड की आवश्यकता है; कोड सूची आपके FTP सर्वर

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

public class URLConnectionReader { 
    public static void main(String[] args) throws Exception { 
     URL url = new URL("ftp://username:[email protected]/server"); 
     URLConnection con = url.openConnection(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(
            con.getInputStream())); 
     String inputLine; 
     while ((inputLine = in.readLine()) != null) 
      System.out.println(inputLine); 
     in.close(); 
    } 
} 

तहत फ़ाइलों के नामDemo Code Belongs to Codejava

package net.codejava.ftp; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 

public class FtpUrlListing { 

    public static void main(String[] args) { 
     String ftpUrl = "ftp://%s:%[email protected]%s/%s;type=d"; 
     String host = "www.myserver.com"; 
     String user = "tom"; 
     String pass = "secret"; 
     String dirPath = "/projects/java"; 

     ftpUrl = String.format(ftpUrl, user, pass, host, dirPath); 
     System.out.println("URL: " + ftpUrl); 

     try { 
      URL url = new URL(ftpUrl); 
      URLConnection conn = url.openConnection(); 
      InputStream inputStream = conn.getInputStream(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 

      String line = null; 
      System.out.println("--- START ---"); 
      while ((line = reader.readLine()) != null) { 
       System.out.println(line); 
      } 
      System.out.println("--- END ---"); 

      inputStream.close(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
+1

सर्वर फ़ोल्डर, अभी, इसमें केवल test.txt है। जब मैं मैं निम्नलिखित आउटपुट प्राप्त करते हैं: 'drwx --- rwx 2 trucker2 inetuser 4096 जनवरी 22 00:40। drwx --- rx 10 trucker2 4096 inetuser जनवरी 22 10:53 .. -rw ---- r-- 1 trucker2 inetuser 8 जनवरी 22 12:40 test.txt' तो मैं यह कैसे प्रयोग करते हैं पढ़ने के लिए फाइलें ...? –

+0

ये कोड सूची आपके निर्देशिका के अंतर्गत फ़ाइलों का नाम, वास्तव में यह सूचीबद्ध करता है। वर्तमान निर्देशिका, .. मूल निर्देशिका और अपने test.txt आप इन फ़ाइलों को आप संपादित लिंक की जांच कर सकते के बारे में अधिक जानकारी प्राप्त करना चाहते हैं। – erhun

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

  • कोई संबंधित समस्या नहीं^_^