मुझे समझदार इकाइयों का उपयोग करके स्ट्रिंग के रूप में फ़ाइल आकार प्रदर्शित करने की आवश्यकता है।एमबी, जीबी आदि के रूप में प्रारूप फ़ाइल आकार
उदा
private static final long K = 1024;
private static final long M = K * K;
private static final long G = M * K;
private static final long T = G * K;
public static String convertToStringRepresentation(final long value){
final long[] dividers = new long[] { T, G, M, K, 1 };
final String[] units = new String[] { "TB", "GB", "MB", "KB", "B" };
if(value < 1)
throw new IllegalArgumentException("Invalid file size: " + value);
String result = null;
for(int i = 0; i < dividers.length; i++){
final long divider = dividers[i];
if(value >= divider){
result = format(value, divider, units[i]);
break;
}
}
return result;
}
private static String format(final long value,
final long divider,
final String unit){
final double result =
divider > 1 ? (double) value/(double) divider : (double) value;
return String.format("%.1f %s", Double.valueOf(result), unit);
}
मुख्य:
1L ==> "1 B";
1024L ==> "1 KB";
2537253L ==> "2.3 MB"
आदि
मैं this previous answer, जो मैं संतोषजनक नहीं मिला
मैं अपने खुद के समाधान के साथ आए हैं जो समान कमियों है पाया समस्या Decimalformat और/या String.format का मेरा सीमित ज्ञान है। मुझे 102412, 1025L आदि 1 KB
पर 1.0 KB
के बजाय मानचित्र करना होगा।
तो, दो संभावनाएं:
- मैं Apache Commons या गूगल अमरूद की तरह एक सार्वजनिक पुस्तकालय में एक अच्छा बाहर के बॉक्स समाधान पसंद करेंगे।
- , अगर वहाँ नहीं है किसी ने मुझे दिखा सकता है कि '.0' भाग से छुटकारा पाने के (स्ट्रिंग प्रतिस्थापन और regex का सहारा के बिना, मैं अपने आप को ऐसा कर सकते हैं)
यह उत्तर देखें: http://stackoverflow.com/a/3758880/34088 –
मुझे पता है। मैंने इसे स्वीकार कर लिया होगा, इसे यहां पोस्ट किया गया था। –
यदि आप NumberFormat.getFormat ("#, ## 0। #") को वापस करने के लिए अंतिम पंक्ति बदलते हैं। प्रारूप (परिणाम) + "" + इकाई; यह जीडब्ल्यूटी में भी काम करता है! इसके लिए धन्यवाद, यह अभी भी गुवा में नहीं है। – tom