2011-01-19 12 views
7

क्या जावा में एक गैर-अवरुद्ध फ़ाइल पढ़ी गई एपीआई है? यदि नहीं, तो सी ++ में से एक बनाना और जेएनआई के माध्यम से इसे जावा ऐप से कॉल करना बुद्धिमान होगा?गैर-अवरुद्ध फ़ाइल

+0

आप इसके लिए क्या उपयोग करना चाहते हैं? – Elalfer

+0

एक एमडीबी के अंदर फ़ाइल आईओ। – TheWolf

+0

अवरुद्ध मॉडल का उपयोग करने में क्या गलत है? –

उत्तर

6

नहीं, FileChannelSelectableChannel का विस्तार नहीं करता है।

शायद क्योंकि सभी ओएस इसका समर्थन नहीं करते हैं।

विंडोज करता है, और सिद्धांत रूप में आप विंडोज-विशिष्ट सी ++ लाइब्रेरी लिख सकते हैं और इसे जेएनआई के माध्यम से कॉल कर सकते हैं, लेकिन java.nio के साथ इसे एकीकृत करने के लिए यह बहुत काम है।

मैं एक कार्यकर्ता धागा फ़ाइल सामग्री को pipe पर प्रतिलिपि बनाना चाहता हूं और पाइप के दूसरे छोर पर गैर-अवरुद्ध पढ़ता हूं।

23

मेरे मूल जवाब अब गलत है, जावा 7 में AsynchronousFileChannel के अलावा

तुम अब भी select एक फ़ाइल पर नहीं कर सकते हैं के बाद से, लेकिन वहाँ अब कर रहे हैं दो अतुल्यकालिक फ़ाइल को पढ़ने विधि: एक है कि एक callback और another लेता है किदेता है।

एक पाइप को समर्पित थ्रेड मतदान करने के बजाय कॉलबैक विधि (और कॉलबैक से एक ईवेंट प्रेषित) का उपयोग करना क्लीनर हो सकता है।

+3

असिंक्रोनस हालांकि गैर-अवरुद्ध के समान नहीं है। वास्तव में एसिंक्रोनस आईओ ऑपरेशंस [एक अनिवार्य थ्रेड पूल का उपयोग करें] (https://docs.oracle.com/javase/7/docs/api/java/nio/channels/AsynchronousChannelGroup.html) जहां गैर-अवरुद्ध आईओ स्पष्ट रूप से ' टी। – RecursiveExceptionException