में पढ़ा ++ मैं एक सी ++ कार्यक्रम है एक्सटेंशन या पथ के बिना "myfile"
की तरह कुछ एक बिंदुमेमोरी मैप फ़ाइल जावा
hMapFile = OpenFileMapping(dwDesiredAccess, bInheritHandle, lpName);
lpName
में उपयोग करता है, यानि कि एक स्मृति मैप की गई फ़ाइल है। मैं WinObj -Browser (WinObj) पथ Sessions\1\BaseNamedObjects\myfile
में फ़ाइल ढूंढ सकता हूं। अगर मैं जावा में उस विशेष फ़ाइल पढ़ने की कोशिश, मैं
File file = new File("myfile");
FileChannel filechannel = new RandomAccessFile(file, "r").getChannel();
MappedByteBuffer buffer = filechannel.map(FileChannel.MapMode.READ_ONLY, 0, filechannel.size());
की कोशिश की लेकिन मैं हमेशा एक ही त्रुटि मिलती है: RandomAccessFile
आदेश पर निर्दिष्ट फ़ाइल नहीं मिल सकी। शायद एक और फ़ाइल-पहुंच की आवश्यकता है? कौनसा?
जैसा कि मैंने अन्य पदों से समझते हैं, वे हमेशा एक रास्ता और एक विस्तार का उपयोग, हालांकि, मुझे पता नहीं है कि पथ और विस्तार मेरे मामले में हो सकता है ...
मैं क्या देख रहा हूँ, मैं Kernel object namespaces कर्नेल वस्तु नामस्थान
मुझे पता पहुंचने का एक तरीका है, इस JNI उदाहरण (Memorymap using JNI) है, लेकिन मैं इसे सरल रखने के लिए और nio
(यहां तक कि यदि संभव हो तो) का उपयोग करना चाहते हैं।
अद्यतन
तो मैं सिर्फ सी # में पूरी बात करने की कोशिश की और यह हास्यास्पद आसान था, मुझे कोड का अधिक से अधिक 5 लाइनों नहीं लिया।
सी ++ प्रोग्राम की वर्तमान कार्यशील निर्देशिका क्या है? वह जगह है जहां फ़ाइल बनाई गई है। यदि आप एक पूर्ण पथ निर्दिष्ट नहीं करते हैं, तो फ़ाइल नाम मौजूदा कार्य निर्देशिका की प्रक्रिया से संबंधित पथ में बनाया गया है। यदि सी ++ और जावा प्रोग्राम की दो कार्यशील निर्देशिका समान नहीं हैं, तो आप वास्तव में सापेक्ष पथ का उपयोग नहीं कर सकते हैं, आपको फ़ाइल को खोजने के लिए, दोनों प्रोग्रामों में एक पूर्ण पथ निर्दिष्ट करना चाहिए। –
@EwinwinBolwidt: हाँ यह अस्तित्व में है, मैंने सवाल में लिखा है कि मैं Winobj ब्राउज़र में जावा ऐप का परीक्षण करते समय उस फ़ाइल तक पहुंच सकता हूं। @ जोचिमपिलबोर्ग: यह 'सी: \ प्रोजेक्ट \ सर्वर \' जैसा कुछ है, बेवकूफ सवाल: फाइल 'एक्सप्लोरर' में दिखाई नहीं दे रही है, लेकिन मुझे लगता है कि यह नहीं होना चाहिए? – rst
फ़ाइल मैपिंग ऑब्जेक्ट फ़ाइल सिस्टम का हिस्सा नहीं है। कार्य निर्देशिका प्रासंगिक नहीं है। आपको 'ओपनफाइल मैपिंग' को भी कॉल करने की आवश्यकता होगी। 'RandomAccessFile' ऐसा नहीं करेगा। –