जावा 7 में नए एनआईओ का उपयोग करके मैं फ़ाइल या निर्देशिका का आकार कैसे प्राप्त कर सकता हूं?जावा 7 का उपयोग कर फ़ाइल/निर्देशिका आकार प्राप्त करें नया आईओ
उत्तर
फ़ाइल का आकार प्राप्त करने के लिए Files.size(Path)
का उपयोग करें।
किसी निर्देशिका के आकार के लिए (जिसका अर्थ है इसमें सभी फाइलों का आकार), आपको अभी भी मैन्युअल रूप से रिकर्स करने की आवश्यकता है, जहां तक मुझे पता है।
MutableLong size = new MutableLong();
Files.walkFileTree(directoryPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
size.add(attrs.size());
}
}
यह निर्देशिका में सभी फ़ाइलों के आकार की गणना करेगा। हालांकि, ध्यान दें कि निर्देशिका में सभी फ़ाइलों को नियमित फाइलों की आवश्यकता होती है, क्योंकि एपीआई BasicFileAttributes के आकार विधि को निर्दिष्ट करता है:
"उन फ़ाइलों का आकार जो नियमित फाइल नहीं हैं, कार्यान्वयन विशिष्ट है और इसलिए निर्दिष्ट नहीं है।"
यदि आप अनियमित फ़ाइल में ठोकरें हैं, तो आप या तो इसे आकार शामिल नहीं करेंगे, या कुछ अज्ञात आकार वापस नहीं करेंगे। आप जांच सकते हैं कि फ़ाइल
BasicFileAttributes.isRegularFile()
अच्छा जवाब, और प्राइमेटिव्स के लिए म्यूटेबल * कक्षाओं को सोचने वाले किसी भी व्यक्ति के लिए apache.commons.lang – Nicholi
यहां उदाहरण चलाने के लिए तैयार है जो निर्देशिकाओं को छोड़कर लॉग-एंड-लॉग भी दर्ज नहीं कर सकता है। यह राज्य जमा करने के लिए java.util.concurrent.atomic.AtomicLong
का उपयोग करता है।
public static void main(String[] args) throws IOException {
Path path = Paths.get("c:/");
long size = getSize(path);
System.out.println("size=" + size);
}
static long getSize(Path startPath) throws IOException {
final AtomicLong size = new AtomicLong(0);
Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
size.addAndGet(attrs.size());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc)
throws IOException {
// Skip folders that can't be traversed
System.out.println("skipped: " + file + "e=" + exc);
return FileVisitResult.CONTINUE;
}
});
return size.get();
}
का हिस्सा हैं आश्चर्यजनक क्यों 'परमाणु लांग' आवश्यक है? क्यों न केवल 'लंबा'? क्या [walkFileTree] (http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#walkFileTree%28java.nio.file.Path,%20java के बारे में कुछ समानांतर है। use.Set,% 20int,% 20java.nio.file.FileVisitor% 29)? – peterh
tbh, मैं बस 3pp (MutableLong) का उपयोग किये बिना अन्य उत्तर को फिर से लिखता हूं। लेकिन मुझे लगता है कि परिवर्तनीय को आंतरिक अज्ञात वर्ग से "अंतिम" होना चाहिए। कौन सा परमाणु लांग की अनुमति देता है। –
विधि 'postVisitDirectory'may भी overriden हो सकता है। 'आकार' संदर्भ को यहां अंतिम रूप में चिह्नित करने की आवश्यकता नहीं है क्योंकि यह आंतरिक अज्ञात वर्ग में नहीं बदला गया है। केवल इसकी सामग्री (मान) बदल दी गई है। परमाणु लांग के स्थान पर एक लंबी सरणी (एक एकल तत्व के साथ) का उपयोग किया जा सकता है। – Stephan
- 1. आईओ 7
- 2. जावा का उपयोग कर राम आकार और हार्ड डिस्क का आकार कैसे प्राप्त करें?
- 3. जावा फ़ाइल का आकार कुशलतापूर्वक प्राप्त करें
- 4. फ़ोल्डर का आकार प्राप्त करें
- 5. जावा में नया पॉइंटर कैसे प्राप्त करें?
- 6. जावा आईओ में डिफ़ॉल्ट बफर आकार 8k क्यों है?
- 7. का उपयोग कर जावा
- 8. Emacs: सेट फ्रेम आकार का उपयोग करने के लिए नया फ्रेम और emacsclient -c प्राप्त करें?
- 9. जावा 7: थ्रेड पुन: उपयोग? (डिस्कनेक्ट करें - पुनः कनेक्ट करें)
- 10. नया निश्चित आकार का वेक्टर बनाएं
- 11. जावा फ़ाइल/आईओ एपीआई
- 12. आईओ
- 13. विंडोज फोन 7 श्रृंखला पर स्क्रीन आकार कैसे प्राप्त करें?
- 14. जावास्क्रिप्ट का उपयोग कर पेज लोड का प्रतिशत प्राप्त करें?
- 15. जावा 7 का उपयोग करने के लिए मेवेन 3.0.4 कैसे प्राप्त करें?
- 16. जावा थ्रेड का उपयोग कर कई फाइलें डाउनलोड करें
- 17. विंडोज के लिए आईबीएम जावा 7 कैसे प्राप्त करें?
- 18. का उपयोग कर जावा
- 19. jquery छवि का आकार प्राप्त करें
- 20. "System.Drawing.Image" का फ़ाइल आकार कैसे प्राप्त करें
- 21. ऐरे का आकार कैसे प्राप्त करें?
- 22. पूर्ण-पाठ खोज का उपयोग कर सटीक मिलान प्राप्त करें
- 23. पायथन। किसी ऑब्जेक्ट का आकार प्राप्त करें
- 24. जावा 6 में जावा 7 एसडीके सुविधाओं का उपयोग 6
- 25. एंड्रॉइड फ़ाइल संसाधन का आकार प्राप्त करें?
- 26. आईओ
- 27. mysql डेटाबेस का आकार कैसे प्राप्त करें?
- 28. एक्शनस्क्रिप्ट 3 का आकार प्राप्त करें
- 29. फ़ाइल का आकार कैसे प्राप्त करें
- 30. .NET आकार बदलें: पुराना आकार प्राप्त करें?
पुराने तरीके से क्या गलत है? जब तक रिकर्सिव निर्देशिका आकार के लिए समर्थन नहीं है। है? – Thilo
मैंने सुना है कि यह बहुत तेज़ है। और मैं इसे आजमा देना चाहता हूं। – clamp
मुझे आश्चर्य करना होगा कि यह तेजी से कैसे हो सकता है .. – Thilo