Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा प्रोग्राम: डायरेक्टरी और नेस्टेड सब-डायरेक्टरी में सभी फाइलों को सूचीबद्ध करना - पुनरावर्ती दृष्टिकोण

उदाहरण

import java.io.File; 

public class Demo { 
    static void printRecursively(File[] my_arr, int my_index, int sub_level) { 
        if (my_index == my_arr.length) 
            return; 
        
        for (int i = 0; i < sub_level; i++) 
            System.out.print("\t"); 
        
        if (my_arr[my_index].isFile()) 
            System.out.println(my_arr[my_index].getName()); 
        else if (my_arr[my_index].isDirectory()) { 
            System.out.println("[" + my_arr[my_index].getName() + "]"); 
            printRecursively(my_arr[my_index].listFiles(), 0, sub_level + 1); 
        } 
        
        printRecursively(my_arr, ++my_index, sub_level); 
    } 
    
    public static void main(String[] args) { 
        String path_main = "फाइलों वाले फोल्डर का पथ"; 
        File main_dir = new File(path_main); 
        
        if (main_dir.exists() && main_dir.isDirectory()) { 
            File my_arr[] = main_dir.listFiles(); 
            System.out.println("मुख्य डायरेक्टरी से सूचीबद्ध फाइलें: " + main_dir); 
            printRecursively(my_arr, 0, 0); 
        } 
    } 
}

आउटपुट

डायरेक्टरी पथ के अंदर, पथ से सभी प्रारूपों की सभी फाइलें सूचीबद्ध होंगी

व्याख्या: Demo क्लास में 'printRecursively' नामक एक फंक्शन होता है जो ऐरे और इंडेक्स मान, और नेस्टेड लेवल को पैरामीटर के रूप में लेता है, और फाइलों के माध्यम से पुनरावृति करता है और उस विशिष्ट डायरेक्टरी में सभी फाइलों की सूची लौटाता है।

मुख्य फंक्शन में, सभी फाइलों वाले फोल्डर का पथ परिभाषित किया जाता है और एक नया फाइल पथ भी बनाया जाता है। 'listFiles' फंक्शन का उपयोग उस विशिष्ट फोल्डर में सभी फाइलों को सूचीबद्ध करने के लिए किया जाता है। अगला, फंक्शन को इन पैरामीटर्स को पास करके कॉल किया जाता है। परिणाम कंसोल पर प्रदर्शित होता है।

आधुनिक विकल्प (Java 8+ Files.walk):

import java.nio.file.*;
import java.io.IOException;

public static void listFilesModern(String path) throws IOException {
    Files.walk(Paths.get(path))
         .filter(Files::isRegularFile)
         .forEach(System.out::println);
}

// या ट्री संरचना के साथ
public static void printTree(Path path, String indent) throws IOException {
    System.out.println(indent + (Files.isDirectory(path) ? "[" : "") + path.getFileName() + (Files.isDirectory(path) ? "]" : ""));
    if (Files.isDirectory(path)) {
        Files.list(path).forEach(p -> printTree(p, indent + "  "));
    }
}

पुनरावर्ती बनाम Files.walk:

पहलूपुनरावर्तीFiles.walk
कोड जटिलताअधिककम
प्रदर्शनस्टैक ओवरफ्लो संभवबेहतर (स्ट्रीम आधारित)
फिल्टरिंगमैन्युअलस्ट्रीम फिल्टर
Java संस्करणसभीJava 8+
  1. जावा में डायरेक्टरी में JPG फाइलों की सूची कैसे प्राप्त करें जावा में डायरेक्टरी में JPG फाइलों की सूची कैसे प्राप्त करें

    File क्लास का String[] list(FilenameFilter filter) मेथड वर्तमान (File) ऑब्जेक्ट द्वारा दर्शाए गए पथ में सभी फाइलों और डायरेक्टरीज के नामों वाला एक String सरणी वापस करता है। लेकिन रिटर्न की गई सरणी में फाइल नाम होते हैं जो निर्दिष्ट फिल्टर के आधार पर फिल्टर किए जाते हैं। FilenameFilter जावा में एक इं

  1. Java प्रोग्राम: डायरेक्टरी में सभी फ़ाइलों को रिकर्सिवली डिलीट करें (केवल फ़ाइलें) Java प्रोग्राम: डायरेक्टरी में सभी फ़ाइलों को रिकर्सिवली डिलीट करें (केवल फ़ाइलें)

    मान लें हमारे पास D डायरेक्टरी में ExampleDirectory नाम का एक फोल्डर है जिसमें 7 फाइलें और 2 डायरेक्टरीज़ हैं: जहां, SampleDirectory1 में दो फाइलें हैं: SampleFile1.txt और SampleFile2.txt। SampleDirectory2 में दो फाइलें हैं: SampleFile2.txt और SampleFile3.txt। उदाहरण निम्नलिखित Java उदाहरण Exa

  1. Java प्रोग्राम: डायरेक्टरी में सभी फ़ाइलों को रिकर्सिवली लिस्ट करें Java प्रोग्राम: डायरेक्टरी में सभी फ़ाइलों को रिकर्सिवली लिस्ट करें

    मान लें D डायरेक्टरी में ExampleDirectory नाम का एक फोल्डर है जिसमें 7 फाइलें और 2 डायरेक्टरीज़ हैं: जहां, SampleDirectory1 में दो फाइलें हैं: SampleFile1.txt और SampleFile2.txt। SampleDirectory2 में दो फाइलें हैं: SampleFile2.txt और SampleFile3.txt। उदाहरण निम्नलिखित Java उदाहरण ExampleDirect