मैं जावा में रिक्त रूप से फ़ोल्डर में सभी फ़ाइलों को कैसे सूचीबद्ध कर सकता हूं?जावा में किसी फ़ोल्डर को स्कैन कैसे करें?
उत्तर
यकीन है कि कैसे आप पेड़ का प्रतिनिधित्व करना चाहते हैं? वैसे भी यहां एक उदाहरण है जो रिकर्सन का उपयोग करके पूरे उप-स्कैन को स्कैन करता है। फ़ाइलों और निर्देशिकाओं का एक जैसे व्यवहार किया जाता है। ध्यान दें कि File.listFiles() गैर-निर्देशिकाओं के लिए शून्य देता है।
public static void main(String[] args) {
Collection<File> all = new ArrayList<File>();
addTree(new File("."), all);
System.out.println(all);
}
static void addTree(File file, Collection<File> all) {
File[] children = file.listFiles();
if (children != null) {
for (File child : children) {
all.add(child);
addTree(child, all);
}
}
}
जावा 7 कुछ सुधार प्रदान करता है। उदाहरण के लिए, DirectoryStream एक समय में एक परिणाम प्रदान करता है - कॉलर को अब अभिनय से पहले पूरा करने के लिए सभी I/O संचालन के लिए इंतजार करना पड़ता है। इस वृद्धिशील जीयूआई अद्यतन, जल्दी रद्द, आदि
static void addTree(Path directory, Collection<Path> all)
throws IOException {
try (DirectoryStream<Path> ds = Files.newDirectoryStream(directory)) {
for (Path child : ds) {
all.add(child);
if (Files.isDirectory(child)) {
addTree(child, all);
}
}
}
}
ध्यान दें कि खतरनाक अशक्त वापसी मान IOException द्वारा प्रतिस्थापित किया गया है।
जावा 7 भी प्रदान करता है एक tree walker:
static void addTree(Path directory, final Collection<Path> all)
throws IOException {
Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
all.add(file);
return FileVisitResult.CONTINUE;
}
});
}
मुझे याद नहीं है कि मैंने इस कोड को कितनी बार लिखा है। :-P – marcospereira
हाँ यह एक आवर्ती दुःस्वप्न की तरह है ..: पी ~ – volley
मुझे इस जवाब को स्वीकार करना है क्योंकि मैंने पेड़ के लिए पूछा था (मैंने ऑस्कर रेयस का जवाब पहले स्वीकार कर लिया था) .. भले ही रिकर्सन के लिए एक और पंक्ति जोड़ना वह कठिन नहीं था :) – Lipis
import java.io.File;
public class Test {
public static void main(String [] args) {
File actual = new File(".");
for(File f : actual.listFiles()){
System.out.println(f.getName());
}
}
}
यह अविश्वसनीय रूप से फ़ाइलें और फ़ोल्डर्स प्रदर्शित करता है।
उन्हें ऑर्डर या निर्देशिका प्रिंट आदि
चेक बाहर अपाचे कॉमन्स FileUtils (listFiles, iterateFiles, आदि) से बचने के लिए फ़ाइल कक्षा में तरीकों देखें। जो भी आप चाहते हैं और फ़िल्टर भी लागू करने के लिए अच्छी सुविधा विधियां।
http://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html
JDK7 में, "अधिक NIO सुविधाओं" एक फ़ाइल पेड़ से अधिक आगंतुक पैटर्न लागू करने के लिए तरीकों या एक निर्देशिका का सिर्फ तत्काल सामग्री होनी चाहिए - करने की कोई जरूरत उन सभी को फिर से शुरू करने से पहले संभावित रूप से बड़ी निर्देशिका में सभी फाइलें पाएं।
लेकिन क्या एनआईओ तेज़ है? – Pacerier
@Pacerier छोटी निर्देशिकाओं के लिए इसे बहुत अंतर नहीं करना चाहिए।मैं अब नौ साल पहले की तुलना में कार्यान्वयन से भी कम परिचित हूं, लेकिन एनआईओ स्ट्रीमिंग * बड़े पैमाने पर * निर्देशिकाओं को एक साथ पढ़ने की तुलना में बेहतर होना चाहिए। ऐसा कहकर, स्मृति अब कई दर्जन बार सस्ता हो जाएगी। –
आप जो भी चाहते हैं उसे फ़िल्टर करने के लिए आप FileFilter
इंटरफ़ेस का भी उपयोग कर सकते हैं। यह सबसे अच्छा प्रयोग किया जाता है जब आप एक अनाम वर्ग को लागू करने वाली इसे बनाने:
import java.io.File;
import java.io.FileFilter;
public class ListFiles {
public File[] findDirectories(File root) {
return root.listFiles(new FileFilter() {
public boolean accept(File f) {
return f.isDirectory();
}});
}
public File[] findFiles(File root) {
return root.listFiles(new FileFilter() {
public boolean accept(File f) {
return f.isFile();
}});
}
}
विज्युअलाइजिंग वृक्ष संरचना मेरे लिए सबसे सुविधाजनक तरीका था:
public static void main(String[] args) throws IOException {
printTree(0, new File("START/FROM/DIR"));
}
static void printTree(int depth, File file) throws IOException {
StringBuilder indent = new StringBuilder();
String name = file.getName();
for (int i = 0; i < depth; i++) {
indent.append(".");
}
//Pretty print for directories
if (file.isDirectory()) {
System.out.println(indent.toString() + "|");
if(isPrintName(name)){
System.out.println(indent.toString() + "*" + file.getName() + "*");
}
}
//Print file name
else if(isPrintName(name)) {
System.out.println(indent.toString() + file.getName());
}
//Recurse children
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++){
printTree(depth + 4, files[i]);
}
}
}
//Exclude some file names
static boolean isPrintName(String name){
if (name.charAt(0) == '.') {
return false;
}
if (name.contains("svn")) {
return false;
}
//.
//. Some more exclusions
//.
return true;
}
public static void directory (File dir) {
File[] files = dir.listFiles();
for (File file : files) {
System.out.println(file.getAbsolutePath());
if (file.listFiles() != null)
directory(file);
}
}
यहाँ निर्देशिका निर्देशिका स्कैन किया जा रहा है । उदाहरण सी: \
- 1. जावा ज़िप - फ़ोल्डर को अनजिप कैसे करें?
- 2. जावास्क्रिप्ट: किसी फ़ोल्डर में सभी छवियों को कैसे लोड करें?
- 3. किसी फ़ोल्डर में सभी फ़ाइलों को वापस करें
- 4. किसी फ़ोल्डर से किसी अन्य फ़ोल्डर में फ़ाइल की प्रतिलिपि बनाने के लिए कैसे करें
- 5. मैं जावा में स्ट्रिंग में किसी वर्ण को कैसे बदलूं?
- 6. किसी फ़ोल्डर और उसके सभी सबफ़ोल्डर और फ़ाइलों को किसी अन्य फ़ोल्डर में कॉपी करने के लिए कैसे करें
- 7. जावा में अपलोड पर एंटीवायरस के साथ फ़ाइल को स्कैन कैसे करें?
- 8. जावा में "मेरा दस्तावेज़" फ़ोल्डर कैसे खोजें
- 9. स्प्रिंग डाटा जेपीए - परीक्षण फ़ोल्डर में फ़ाइलों के लिए स्कैन
- 10. जावा में किसी ईमेल को कैसे ट्रैक करें?
- 11. जावा में किसी अन्य निर्देशिका में फ़ाइल को कैसे खोलें?
- 12. वेबपैलिकेशन में स्कैन करने के लिए कैसे करें
- 13. ज़िप फ़ोल्डर को रिकर्सिवली, किसी दिए गए उप फ़ोल्डर (लिनक्स)
- 14. जावा में खाली फ़ोल्डर कैसे बनाएं?
- 15. किसी फ़ोल्डर या जेएआर से रनटाइम पर कक्षाएं कैसे लोड करें?
- 16. स्कैन
- 17. जावा जार चींटी में फ़ोल्डर
- 18. सी # विंडोज़ फॉर्म में किसी फ़ोल्डर से किसी सूची बॉक्स में फ़ाइलों को पॉप्युलेट करें
- 19. .git फ़ोल्डर को कैसे कम करें
- 20. phpStorm, किसी फ़ोल्डर/पेड़ को अनुक्रमणित न करें
- 21. एमएस तैनाती - किसी वेबसाइट पर एक फ़ोल्डर को तैनात करें
- 22. तालिका स्कैन और सूचकांक स्कैन एसक्यूएल में
- 23. जावा में किसी फ़ोल्डर में बदलाव को ट्रैक करने का सबसे आसान तरीका क्या है?
- 24. सी # में COM बंदरगाहों के लिए स्कैन कैसे करें?
- 25. xampp localhost को किसी अन्य फ़ोल्डर में कैसे बदलें (xampp फ़ोल्डर के बाहर)?
- 26. स्कैन
- 27. किसी अन्य फ़ोल्डर में गिट "लॉग" कमांड का उपयोग करें
- 28. एक फ़ोल्डर में फ़ाइलें जावा
- 29. टेम्पल फ़ोल्डर के विजुअल स्टूडियो और वायरस स्कैन
- 30. डॉक्सिजन दस्तावेज़ में फ़ोल्डर को कैसे शामिल करें?
ट्री द्वारा आपका क्या मतलब है? कृपया अपने प्रश्न को दोबारा दोहराएं यदि आप किसी फ़ोल्डर (रिकर्सिवली) में सभी फ़ाइलों को सूचीबद्ध करने के लिए एक विधि की तलाश कर रहे हैं। –
@ PeterPerháč यह प्रश्न 4 साल पुराना है .. :) धन्यवाद – Lipis