संपादित करें: जेसीपी बहुत अच्छा दिखता है। मैं यह देखने का सुझाव दूंगा कि यह वास्तव में आपके उपयोग-मामले के लिए कैसे प्रदर्शन करता है।
यदि आप विंडोज़ पर अपना सिस्टम चला रहे हैं और किसी बिंदु पर एक भयानक एन^2 प्रदर्शन हिट देखा है, तो आप शायद स्वचालित 8.3 फाइलनाम पीढ़ी द्वारा किए गए प्रदर्शन हिट के खिलाफ चल रहे हैं। बेशक, आप disable 8.3 filename generation कर सकते हैं, लेकिन जैसा कि आपने बताया है, फिर भी एक बड़ी निर्देशिका में बड़ी संख्या में फ़ाइलों को स्टोर करना एक अच्छा विचार नहीं होगा।
बड़ी संख्या में फ़ाइलों को संभालने के लिए मैंने देखा एक आम रणनीति फ़ाइल नाम के पहले एन अक्षरों के लिए निर्देशिका बनाना है। उदाहरण के लिए, document.pdf d/o/c/u/m/document.pdf में संग्रहीत किया जाएगा। मुझे जावा में ऐसा करने के लिए लाइब्रेरी को कभी भी याद नहीं है, लेकिन यह बहुत सरल लगता है। यदि आवश्यक हो, तो आप लुकअप टेबल (समान रूप से वितरित यादृच्छिक फ़ाइल नामों के लिए मैपिंग कुंजियों) को स्टोर करने के लिए डेटाबेस बना सकते हैं, इसलिए आपको हर बार अपनी अनुक्रमणिका को पुनर्निर्माण नहीं करना पड़ेगा। यदि आप स्वचालित समर्पण का लाभ प्राप्त करना चाहते हैं, तो आप प्रत्येक फ़ाइल की सामग्री को हश कर सकते हैं और चेकसम को फ़ाइल नाम के रूप में उपयोग कर सकते हैं (लेकिन आप एक चेक भी जोड़ना चाहते हैं ताकि आप गलती से उस फ़ाइल को त्याग न दें जिसका चेकसम एक मौजूदा फ़ाइल से मेल खाता हो हालांकि सामग्री वास्तव में अलग हैं)।
फ़ाइलों के आकार के आधार पर, आप फ़ाइलों को डेटाबेस में स्वयं संग्रहित करने पर भी विचार कर सकते हैं - यदि आप ऐसा करते हैं, तो संस्करण जोड़ने के लिए यह छोटा होगा, और आपको यादृच्छिक फ़ाइल नाम बनाना आवश्यक नहीं होगा क्योंकि आप ऑटो-जेनरेट की गई प्राथमिक कुंजी का उपयोग करके उनका संदर्भ दे सकते हैं।