2015-05-22 10 views
6

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

उत्तर

4

आप Google के जिमफ़ेस और जावा 7 एनआईओ पैकेज का उपयोग कर जावा में इन-मेमोरी फ़ाइल सिस्टम बना सकते हैं।

कृपया इस लिंक को देखें। यहां आपको नमूना ट्यूटोरियल मिलेगा: create In-memory file system in java

+0

दुर्भाग्य से jimfs कई सीमाएं पीड़ित हैं। आपकी सबसे अच्छी शर्त [मेमोरीफाइल सिस्टम] (https://github.com/marschall/memoryfilesystem) का उपयोग करना है। – fge

9

कस्टम फ़ाइल सिस्टम प्रदाता को java.nio.file.spi.FileSystemProvider क्लास को कार्यान्वित करना होगा। फ़ाइल सिस्टम प्रदाता की पहचान यूआरआई योजना जैसे फाइल, जार, मेमोरी, सीडी द्वारा की जाती है। नीचे

ये लिंक अच्छा शुरू करने की जानकारी

http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/filesystemprovider.html

(स्मृति फाइल सिस्टम में के बारे में नहीं) नीचे दिए गए लिंक आभासी फाइल सिस्टम के बारे में है प्रदान करते हैं। यह कुछ डिज़ाइन मुद्दों के बारे में बात करता है जो आपके स्वयं की फाइल सिस्टम बनाने का निर्णय लेने में आपकी मदद कर सकते हैं।

http://www.flipcode.com/archives/Programming_a_Virtual_File_System-Part_I.shtml

लेकिन आप हमेशा पहले से ही बनाया गया है और परीक्षण किया इस्तेमाल कर सकते हैं code.This तेज और आसान बनाए रखने के लिए और आप त्रुटि की स्थिति में समर्थन प्राप्त होगा किया जाएगा।

jimfs पर एक नज़र (जावा के लिए एक इन-स्मृति फाइल सिस्टम 7+)

https://github.com/google/jimfs

इसके अलावा में

कॉमन्स देखने आभासी फाइल सिस्टम ले लो http://commons.apache.org/proper/commons-vfs/

marschall (एक के स्मृति कार्यान्वयन में एक जेएसआर -203 फाइल सिस्टम) https://github.com/marschall/memoryfilesystem

+0

दूसरा उदाहरण वास्तव में nio2 के लिए उपयुक्त नहीं है। उन्हें बेहतर वर्गीकृत करें;) – fge

+0

@fge ने भ्रम से बचने के लिए लिंक के बारे में कुछ जानकारी जोड़ा है। – Raj

+0

ठीक है लेकिन फिर यह 2015 है; apache-common-vfs मूल रूप से अप्रचलित है :) – fge

2

memoryfilesystem का उपयोग करें।

जिमफ़्स का पिछले जवाब में उल्लेख किया गया है, लेकिन मेमोरीफाइल सिस्टम बहुत अधिक संभालता है।

उदाहरण उपयोग:

final FileSystem fs = MemoryFileSystem.newLinux().build("myfs"); 

final Path dir = fs.getPath("thedir"); 

Files.createDirectory(dir); 

आदि आदि (! File काम नहीं करेगा) इस में फ़ाइलों में हेरफेर करने के java.nio.file API का उपयोग करें। अधिक जानकारी के लिए here देखें।

+2

मुझे पढ़ने और लिखने के लिए स्मृति में काम करने के लिए 'फ़ाइल' की आवश्यकता है। कोई विचार? – Jus12