2013-08-28 16 views
9

में कनवर्ट करें मैं निर्देशिका में परिवर्तन फ़ाइल की निगरानी के लिए अपाचे कॉमन्स वीएफएस 2 (वर्चुअल फाइल सिस्टम) का उपयोग कर रहा हूं। org.apache.commons.vfs2.FileListener वापसी org.apache.commons.vfs2.FileObject। आप कैसे एक java.io.Fileफ़ाइल फ़ाइल को एक फ़ाइल

+0

यह सिर्फ एक इंटरफ़ेस है। आप किस कार्यान्वयन का उपयोग कर रहे हैं? –

+0

यदि आपका मतलब फ़ाइल लिस्टनर है, तो सभी विधियां FileObject –

+0

संख्या लौटाती हैं। FileObject एक इंटरफ़ेस है। यह पता लगाने की कोशिश करें कि ठोस कार्यान्वयन क्या किया जाता है। –

उत्तर

2

में कन्वर्ट एक org.apache.commons.vfs2.FileObject उपयोग कर सकते हैं

new File(fileobject.getName().getPath()); 

ध्यान दें कि एक वीएफएस फ़ाइल वस्तु जरूरी कोई वास्तविक फ़ाइल संदर्भ नहीं है, यह भी उदाहरण के लिए एक ज़िप फ़ाइल के भीतर एक फ़ाइल संदर्भित कर सकते हैं। एक फ़ाइल ऑब्जेक्ट प्राप्त करने के लिए उपयोग किए गए रिज़ॉल्वर पर निर्भर करता है।

अतिरिक्त संदर्भ:

  1. [VFS-443] Need an easy way to convert from a FileObject to a File - ASF JIRA
+0

मुझे नहीं लगता कि यह काम करेगा, अगर FileObject एक ज़िप में एक फ़ाइल का प्रतिनिधित्व करता है। –

+0

यह – doanduyhai

+0

विशेष रूप से विंडोज पर काम नहीं करता है, क्योंकि यह केवल वॉल्यूम पर पथ लौटाता है, और मशीन पर पथ नहीं। – Riduidel

0

org.apache.commons.vfs2.FileObject एक इंटरफ़ेस है। मेरा अनुमान है, है कि आप निम्न कार्यान्वयन org.apache.commons.vfs2.provider.local.LocalFile

इस वर्ग विधि getLocalFile() जो वर्ग java.io.File

आप अन्य कार्यान्वयन के एक LocalFile सबसे के साथ काम नहीं कर रहे हैं की पेशकश की एक ऑब्जेक्ट प्रदान करता है के साथ काम कर रहे हैं doGetInputStream() जो एक फ़ाइल वस्तु

+1

'getLocalFile()' दुर्भाग्य से संरक्षित है (जैसा कि जावाडोक इंगित करता है) जो इसे अनुपयोगी बनाता है। – Riduidel

+0

यह सच है! उसे नहीं देखा इस पर ध्यान दिलाने के लिए धन्यवाद –

4
fileobject.getURL().getFile() 

काम करना चाहिए बनाने के लिए इस्तेमाल किया जा सकता है। चेतावनी यह है कि हमें इसे पहले जावा URL ऑब्जेक्ट में कनवर्ट करने की आवश्यकता है, जिसका उपयोग तब फ़ाइल को हल करने के लिए किया जा सकता है।

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