क्या जावा मेमोरी-मैप किए गए बाइट बफर का विस्तार करने का कोई तरीका है जैसे कि नया आकार डिस्क पर मैप किए गए फ़ाइल पर वापस दिखाई देता है?जावा मेमोरी-मैप किए गए बाइट बफर का विस्तार
11
A
उत्तर
10
नहीं, आपको अंतर्निहित फ़ाइल के आकार को समायोजित करने और मेमोरी मैप किए गए बाइट बफर को फिर से बनाने की आवश्यकता होगी।
RandomAccessFile file = new RandomAccessFile(/* some file */);
MappedByteBuffer buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());
// Some stuff happens...
// adjust the size
file.setLength(newLength);
// recreate the memory mapped buffer
buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());
नोट: फ़ाइल की लंबाई निर्धारित करना थोड़ा अजीब व्यवहार है। यदि आप फ़ाइल के अंत से परे किसी विशिष्ट स्थिति पर मानचित्र के माध्यम से फ़ाइल को लिखते हैं (या तो map.position() या map.putX (स्थिति, ...) का उपयोग कर) मानों को अंत में जोड़ा जाएगा फ़ाइल और आप जिस स्थिति की अपेक्षा करते हैं उस पर लिखी नहीं है (कम से कम लिनक्स पर)। यदि यह अवांछित व्यवहार है तो आपको फ़ाइल को वास्तव में बढ़ने के लिए फ़ाइल में डेटा जोड़ना होगा।
संबंधित मुद्दे
- 1. बाइट सरणी और जब बाइट बफर का उपयोग कब करें?
- 2. नोडजेस बफर बनाम टाइप किए गए सरणी
- 3. जेनरेट किए गए जावा स्रोत
- 4. बाइट [] से बफर प्रकार
- 5. बाइट बफर (0.0-1.0)
- 6. जावा में बिना हस्ताक्षर किए गए int
- 7. सी ++ सॉकेट 256 बाइट बफर
- 8. जावा एनम्स का विस्तार
- 9. जावा - बाइट [] से बाइट []
- 10. जावा: बाइट [] से बाइट []
- 11. जावा सॉकेट और ड्रॉप किए गए कनेक्शन
- 12. जावा रिटर्न का उपयोग कर फेसबुक पर हस्ताक्षर किए गए हस्ताक्षर किए गए JSON
- 13. किसी दिए गए विस्तार
- 14. ऊंट - जावा डीएसएल का विस्तार?
- 15. जावा सीखना, सिंक्रनाइज़ किए गए कीवर्ड
- 16. जावा में चेक/अनचेक किए गए कस्टम अपवाद कैसे बनाएं?
- 17. स्ट्रीम किए गए यूएसबी डेटा
- 18. जावा बाइट डेटा प्रकार
- 19. स्कैन किए गए पीडीएफ
- 20. 'MSG_MORE`- फ़्लैग किए गए पैकेट्स के लिए फ्लश कर्नेल का टीसीपी बफर
- 21. जावा बाइट सी # बाइट के समान है?
- 22. एक विस्तार जावा
- 23. जावा: बफर यूट?
- 24. इसे ओवरराइट किए बिना प्रोटोटाइप फ़ंक्शन का विस्तार
- 25. एलआरयू बाइट कैश जावा
- 26. जावा - रिंग बफर
- 27. स्मृति में बाइट का आकार - जावा
- 28. जावा जर्सी: बाइट सरणी
- 29. Velocity- जेनरेट किए गए एचटीएमएल
- 30. बाइट में चार? (जावा)
क्या आप अन्य शब्दों में अजीब व्यवहार की व्याख्या करेंगे? क्या यह फ़ाइल के अंत में संलग्न होने की उम्मीद नहीं है यदि मैं इसके अंत से लिखता हूं (मैप किए गए बफर के माध्यम से यह पूरे फ़ाइल आकार को मानचित्र करता है)? – geeko
आकार में 50 बाइट्स फ़ाइल के साथ शुरू करें। फ़ाइल के आकार को बढ़ाने के लिए कॉल लम्बाई (1000) पर कॉल करें। फिर फ़ाइल से एक नया नक्शा बनाएं (file.getChannel()। नक्शा (..., 0, 1000)। यदि नए मैप्डबेट बफर पर आप putByte (500, (बाइट) 'x' कहते हैं) मान 'x' होगा फ़ाइल (0-आधारित इंडेक्स) में 50 वें बाइट के रूप में दिखाई दें (शायद अजीब नहीं, लेकिन संभावित रूप से अप्रत्याशित व्यवहार) –
मैं देख सकता हूं कि आपका क्या मतलब है। धन्यवाद माइकल। – geeko