2011-12-13 6 views
25

मैं हमेशा कार्य कि इतने तरह TIMEUNIT इस्तेमाल किया की पठनीयता को पसंद किया है:क्या फाइलसाइज इकाइयों के लिए जावा एनम है जो java.util.concurrent.TimeUnit के बराबर है?

long timePeriodInMillis = TimeUnit.MINUTES.toMillis(53); 

की तरह कुछ से अधिक:

long timePeriodInMillis = 53 * 60 * 1000; 

वहाँ एक बराबर enum मैं फ़ाइल आकार इकाइयों के लिए उपयोग कर सकते हैं है?

long maxBits = FilesizeUnit.MEGABYTES.toBits(11); 

उत्तर

9

मैंने टाइमयूनीट एनम द्वारा प्रेरित मस्ती के लिए इस आधा साल पहले बिल्कुल ठीक किया है।

मैं कल इसे गिटहब में अपलोड कर दूंगा। इसमें दो enums शामिल हैं: BitUnit और ByteUnit। दोनों एक-दूसरे के बीच परिवर्तित करने का भी समर्थन करते हैं। बाइटयूनीट में 2-आधारित उपसर्गों के साथ-साथ 10-आधारित उपसर्गों के लिए समर्थन है। (। Enum स्थिरांक और ByteUnit उपयोग आईईसी 80,000-13 उपसर्गों के लिए शब्दावली में विधि)

प्रयोग इस तरह दिखता है:

System.out.println(BitUnit.KBIT.toKiB(16000)); 

System.out.println(ByteUnit.GIB.toMB(1)); 
System.out.println(ByteUnit.GIB.toMiB(1)); 
System.out.println(ByteUnit.GB.toMB(1)); 
System.out.println(ByteUnit.GB.toMiB(1)); 

... और बाहर प्रिंट:

1953.125 

1073.741824 
1024.0 
1000.0 
953.67431640625 

रूपांतरण के लिए बिट्स और बाइट्स के बीच विधियों को आपने 8 बिट्स प्रति बाइट के अलावा एक शब्द आकार निर्दिष्ट करने के लिए विधियों को अधिभारित किया है। आशा है कि आप कल तक इंतजार कर सकते हैं।


संपादित

यहाँ आप कर रहे हैं: https://github.com/fabian-barney/Utils

निर्देशिका संरचना के लिए मुझे दोष मत करो - मैं अभी भी Git के साथ familar अभी तक नहीं कर रहा हूँ। :)

+1

क्या आपने इसे गिटहब तक गिट करने का प्रबंधन किया था? –

+0

मैंने अभी एक खाता बनाया है। EGit को ठीक से स्थापित और कॉन्फ़िगर करने के लिए मुझे एक सेकंड दें।यह गिट का उपयोग करने वाला मेरा पहला समय है - बस एसवीएन और सीवी के साथ अनुभव है। :) –

+0

समझ गया! सूखी इतनी देर लग गई! –

0

नहीं की तरह कुछ है, लेकिन आप खुद के साथ आसानी से परिवर्तित कर सकते हैं:

long maxBits = 11L * 1024 * 1024 * 8; 

या

long maxBits = 11L * 1000 * 1000 * 8; 

एक megabyte की अपनी परिभाषा पर निर्भर करता है।

+0

यह 1 गीगाबाइट से ऊपर पूर्णांक अंकगणित और अतिप्रवाह करेगा। मैं अनुशंसा करता हूं कि कम से कम एक स्थिरांक में से एक को पिछला 'एल' या कास्ट हो। – Gray

+2

निश्चित रूप से, लेकिन स्पष्ट गुणा वह है जिसे मैं टालने की कोशिश कर रहा हूं। –

+0

अच्छा बिंदु, ऊपर तय किया गया। इन स्थिरांक से कोई फर्क नहीं पड़ता, लेकिन 255 एमबी से ऊपर होगा। स्पष्ट प्रकार अब बाद में परेशानी को रोक सकते हैं। –

-4

Comparable इंटरफ़ेस के लिए जावा प्रलेखन को देखते हुए TimeUnit लागू करता है ऐसी कोई चीज़ नहीं है। यहां देखें: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Comparable.html

उस लिंक के साथ हालांकि आपके प्रोजेक्ट में उपयोग करने के लिए अपने स्वयं के वर्किंग वर्जन को प्राप्त करना मुश्किल नहीं होना चाहिए।

+0

'तुलनात्मक' कभी प्रश्न से कैसे संबंधित है? –

संबंधित मुद्दे