2012-07-25 7 views
7

है मैं के साथ एक FileList मिलती है:ढूंढने में कोई फ़ाइल के लिए पथ दिया यह आईडी

String q = "title contains '"+query+"' and trashed = false"; 
    FileList list = drive.files().list().setQ(q).execute(); 

मैं FileList में प्रत्येक मिलान फाइल करने के लिए एक रास्ता खोजना चाहते हैं।

मैं समझता हूं कि एक ही फ़ाइल एकाधिक फ़ोल्डर्स में दिखाई दे सकती है।

बार-बार फोन करने के लिए से मैं क्या मिल गया है, एक ही रास्ता एक फ़ाइल के लिए एक रास्ता बनाने के लिए है:

drive.files().get(id).execute() 

और फिर उस फ़ाइल के माता-पिता सूची में से एक आईडी चुनते हैं, तो जब तक पेड़ पर चलने जड़ पहुंचा है।

पेड़ नेविगेट करते समय, मैं केवल पहले माता-पिता को चुन सकता हूं, या जब तक मुझे रूट नहीं मिल जाता तब तक "बीएफएस" कर सकते हैं।

क्या यह वास्तव में फ़ाइल के पथ को खोजने का एकमात्र तरीका है, या क्या मैंने एपीआई के कुछ हिस्से को याद किया है?

यदि यह एकमात्र तरीका है, तो क्या फ़ोल्डरों में कई माता-पिता भी हो सकते हैं, जिससे चक्र संभव हो सकते हैं?

(/ ए/बी/सी =>/ए/बी/सी/बी/सी/बी/सी ... यदि बी में माता-पिता & सी हैं)?

उत्तर

4

फ़ोल्डर्स (जो कि एक विशिष्ट एमआईएम प्रकार के साथ बस विशेष ड्राइव फ़ाइल हैं) के कई माता-पिता हो सकते हैं, मैं बीएफएस दृष्टिकोण की सिफारिश करता हूं और सुनिश्चित करता हूं कि आप लूप को संभाल लें।

स्टॉप स्थिति के लिए, आप रूट फ़ोल्डर की आईडी को सहेज सकते हैं जिसे आप about.rootFolderId विशेषता से पुनर्प्राप्त कर सकते हैं।

+0

क्या माता-पिता के पास शीर्षक फ़ील्ड है? अंततः मुझे पथ तत्वों की एक सूची के साथ समाप्त करने की आवश्यकता है, फाइल आईडी नहीं। –

+0

मैं देखता हूं, इस मामले में, आप drive.parents.list का उपयोग नहीं कर सकते हैं। मैं इसे प्रतिबिंबित करने के लिए उत्तर अद्यतन करता हूं। – Alain

+0

अलैन, क्या आप जानते हैं कि इसके बारे में उपयोग करना आवश्यक है या नहीं .rootFolderId, या एक खाली माता-पिता सूची पर्याप्त है? अगर about.rootFolderId आवश्यक है, तो क्या यह कभी भी किसी खाते में बदल सकता है, या क्या मैं इसे स्थायी रूप से कैश कर सकता हूं? –

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