2011-04-03 12 views
6

क्या यह डिज़ाइन द्वारा है?रुबी किसी निर्देशिका में फ़ाइलों को यादृच्छिक रूप से क्यों एक्सेस करता है?

कोड यह रहा:

class FileRenamer 
    def RenameFiles(folder_path)  
     files = Dir.glob(folder_path + "/*") 
    end 
end 

puts "Renaming files..." 

renamer = FileRenamer.new() 
files = renamer.RenameFiles("/home/papuccino1/Desktop/Test") 
puts files 

puts "Renaming complete." 

यह फ़ाइलें ला किया जा रहा है यादृच्छिक क्रम, के रूप में नहीं वे नॉटिलस में प्रदर्शित किए जाते है।

enter image description here

इस डिजाइन से है? मैं सिर्फ उत्सुक हूँ।

+0

अपने सिस्टम (ओएस एक्स) पर वर्णानुक्रम यह करता है । यह आपके पर कैसे प्रदर्शित होता है? –

+0

यादृच्छिक रूप से। मेरे पास test.txt, test (copy1) .txt, test (copy2) .text है और वे यादृच्छिक क्रम में दिखाई देते हैं। –

+0

क्या आप * निश्चित * वे यादृच्छिक क्रम में हैं? यह सत्यापित करने के लिए आपने वास्तव में क्या वैचारिक विश्लेषण किया है कि वे वास्तव में यादृच्छिक हैं? मेरा अनुमान यह होगा कि वे इनोड ऑर्डर में हैं जो यादृच्छिक लेकिन कुछ भी है। –

उत्तर

15

ऑर्डर किसी विशेष ओएस पर हर बार समान होना चाहिए, हालांकि ऑपरेटिंग सिस्टम में अलग है।

व्यवहार या Dir.glob को विभिन्न ओएस में समान होने पर भरोसा नहीं किया जा सकता है। यह सुनिश्चित नहीं है कि यह डिज़ाइन द्वारा है, बल्कि फाइल सिस्टम का एक आर्टेफैक्ट है।

विंडोज और लिनक्स पर परिणाम पदानुक्रम द्वारा क्रमबद्ध होते हैं, और फिर वर्णानुक्रम से; मैक ओएस एक्स पर परिणाम वर्णानुक्रम में क्रमबद्ध हैं। आप इसे केस संवेदी चाहता था

files = Dir.glob("./*").sort 

या अगर, शायद:

आप अपने परिणामों को जैसे पर तरह फोन करके प्रभाव को कम कर सकता है

files = Dir.glob("./*").sort {|a,b| a.upcase <=> b.upcase} 
+0

धन्यवाद, यह मुझे पागल कर रहा है – lfender6445