Directory Navigation in Java | TechRepublic

हम चर्चा करते हैं कि निर्देशिकाओं, उप-निर्देशिकाओं के साथ कैसे काम करें और जावा और डायरेक्टरीस्ट्रीम विधि का उपयोग करके उन्हें कैसे पार करें। और अधिक जानें।

जावा प्रोग्रामिंग ट्यूटोरियल.

निर्देशिका एक संगठनात्मक फ़ाइल सिस्टम संरचना है जिसमें फ़ाइलें और अन्य निर्देशिकाएँ शामिल होती हैं। जावा किसी निर्देशिका को पार करने के कुछ तरीके प्रदान करता है, यह इस पर निर्भर करता है कि आप किस संस्करण का उपयोग कर रहे हैं, जिसमें शामिल हैं:

  1. का उपयोग सूचीफ़ाइलें() फ़ाइल वर्ग की विधि
  2. इसका उपयोग करना डायरेक्टरीस्ट्रीम जावा 7 और उसके बाद में
  3. स्थैतिक का उपयोग करना फ़ाइलें.सूची() जावा 8 और उसके बाद की विधि
  4. का उपयोग टहलना() जावा 8 और उसके बाद की विधि

यह प्रोग्रामिंग ट्यूटोरियल दिखाएगा कि जावा में निर्देशिका संरचना को नेविगेट करने के लिए उपरोक्त प्रत्येक तकनीक का उपयोग कैसे करें।

देखना: शीर्ष जावा आईडीई

जावा में फ़ाइल listFiles() विधि

सूचीफ़ाइलें() की एक उदाहरण विधि है java.io.फ़ाइल कक्षा। इसका उपयोग करने के लिए, डेवलपर्स को बस एक नया इंस्टेंट करना होगा फ़ाइल कंस्ट्रक्टर को पथ प्रदान करके ऑब्जेक्ट बनाएं और फिर इनवॉक करें सूचीफ़ाइलें() इस पर। सूचीफ़ाइलें() की एक सरणी लौटाता है फ़ाइल ऑब्जेक्ट जिन्हें प्रोग्रामर व्यक्तिगत फ़ाइलों के बारे में अधिक जानकारी प्राप्त करने और/या उन पर संचालन करने के लिए पुनरावृत्त कर सकते हैं। यहां एक बुनियादी उदाहरण दिया गया है जो विंडोज़ में सभी फ़ाइलों और निर्देशिकाओं को सूचीबद्ध करता है “सी:\मेरे दस्तावेज़” फ़ोल्डर:

package com.developer;

import java.io.File;

public class ListFilesExample {
  public static void main(String[] args) {
    // Store the name of files and directories
    // in an array of Files.
    // Don't forget to escape the backslash character!
    File[] files = new File("C:\\My Documents").listFiles();
    
    // Traverse through the files array
    for (File file : files) {
      // If a subdirectory is found,
      // print the name of the subdirectory
      if (file.isDirectory()) {
        System.out.println("Directory: " + file.getName());
      }
      else {
        // Print the file name
        System.out.println("File: " + file.getName());
      }
    }
  }
}

यहां पाई गई निर्देशिकाओं और फ़ाइलों की आंशिक सूची दी गई है:

Directory: AAMS
Directory: Addictive Drums
Directory: Angular
Directory: angular-starter
Directory: Any Video Converter
Directory: articles
File: Avatar - House Of Eternal Hunt - transposed.tg
File: Avatar - House Of Eternal Hunt.tg
File: Avatar - Legend Of The King.tg
Directory: bgfx

जावा में पुनरावर्ती निर्देशिका ट्रैवर्सल

चूँकि हम निर्देशिकाओं के लिए परीक्षण कर सकते हैं, हम अपने लूप को एक अलग विधि में ले जा सकते हैं जिसे हम उपनिर्देशिकाओं की फ़ाइलों के साथ-साथ हमारी विधि में प्रदान की गई फ़ाइलों को सूचीबद्ध करने के लिए पुनरावर्ती रूप से लागू कर सकते हैं, जैसा कि निम्नलिखित जावा कोड उदाहरण में दिखाया गया है:

package com.developer;

import java.io.File;

public class RecursiveListFilesExample {
	
  public static void main(String[] args) {
    listFilesInDirectory(new File("C:\\My Documents"));
  }
  
  private static void listFilesInDirectory(File dirPath) {
    File filesList[] = dirPath.listFiles();
    
    // Traverse through the files array
    for (File file : filesList) {
      // If a sub directory is found,
      // print the name of the sub directory
      if (file.isDirectory()) {
        System.out.println("Directory: " + file.getName());
        listFilesInDirectory(file);
      }
      else {
        // Print the file name present in given path
        System.out.println("File: " + file.getName());
      }
    }
  }
}

हम प्रोग्राम आउटपुट में देख सकते हैं कि यह अब उपनिर्देशिकाओं की फ़ाइलों को भी सूचीबद्ध कर रहा है:

Directory: AAMS
File: AAMS V3 Manual.pdf
File: AAMS V4 Setup.exe
File: AAMS.xml
File: Licence.txt
File: Version.txt
Directory: Addictive Drums
Directory: Settings
File: MidifileDatabaseCache.dat
File: Recent.dat

देखना: जावा सीखने के लिए शीर्ष ऑनलाइन जावा पाठ्यक्रम

जावा के साथ फ़ाइलों के माध्यम से लूप करने के लिए डायरेक्टरीस्ट्रीम का उपयोग करना

जावा 7 ने इसका एक विकल्प पेश किया सूचीफ़ाइलें() बुलाया डायरेक्टरीस्ट्रीम. यह for-each निर्माण के साथ अच्छी तरह से काम करता है, जिससे हमें एक ही बार में सब कुछ पढ़ने के बजाय निर्देशिका की सामग्री पर पुनरावृति करने की अनुमति मिलती है।

नीचे दिया गया उदाहरण कोड दिखाता है कि जावा का उपयोग कैसे करें डायरेक्टरीस्ट्रीम किसी निर्देशिका की फ़ाइलों को सूचीबद्ध करने की विधि में:

public Set<String> listFilesUsingDirectoryStream(String dir) throws IOException {
  Set<String> fileSet = new HashSet<>();
  try (DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(dir))) {
    for (Path path : stream) {
      if (!Files.isDirectory(path)) {
        fileSet.add(path.getFileName()
          .toString());
      }
    }
  }
  return fileSet;
}

ऊपर, हमने जावा को समापन को संभालने दिया डायरेक्टरीस्ट्रीम प्रयास-के-संसाधन निर्माण के माध्यम से संसाधन। हम स्थैतिक को नियोजित कर सकते हैं Files.isDirectory(पथ) निर्देशिकाओं को फ़िल्टर करने और वापस लौटाने की विधि तय करना फ़ोल्डर में फ़ाइलों की.

स्थिर Files.list() विधि का उपयोग करना

जावा 8 ने एक नया परिचय दिया सूची() विधि में java.nio.फ़ाइल.फ़ाइलें. सूची विधि एक आलसी आबादी लौटाती है धारा निर्देशिका में प्रविष्टियों की. इस प्रकार, यह बड़े फ़ोल्डरों को संसाधित करने के लिए अधिक कुशल है। यहां एक विधि है जो रिटर्न देती है तय करना फ़ाइल नामों का:

public Set<String> listFilesUsingFilesList(String dir) throws IOException {
  try (Stream<Path> stream = Files.list(Paths.get(dir))) {
    return stream
      .filter(file -> !Files.isDirectory(file))
      .map(Path::getFileName)
      .map(Path::toString)
      .collect(Collectors.toSet());
  }
}

हालाँकि उपरोक्त कोड समान दिख सकता है सूचीफ़ाइलें()यह इस बात में भिन्न है कि डेवलपर्स प्रत्येक फ़ाइल का पथ कैसे प्राप्त करते हैं।

फिर से, हमने इसका उपयोग करके स्ट्रीम बनाई संसाधनों के साथ प्रयास करें यह सुनिश्चित करने के लिए निर्माण करें कि स्ट्रीम पढ़ने के बाद निर्देशिका संसाधन बंद है।

जावा में निर्देशिका सामग्री पर कैसे चलें

टहलना() विधि रिटर्न a धारा किसी दिए गए शुरुआती फ़ाइल/निर्देशिका से शुरू होने वाले फ़ाइल ट्री को गहराई-पहले तरीके से चलाकर (जिसका अर्थ है कि यह फ़ाइल/निर्देशिका से सबसे बड़ी गहराई पर शुरू होता है)। निम्नलिखित प्रोग्राम पूर्ण फ़ाइल ट्री के लिए पूर्ण फ़ाइल पथ प्रिंट करता है “सी:\मेरे दस्तावेज़”:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;

class FilesWalkExample {

  public static void main(String[] args)
    throws IOException {
  
    // Create a try-catch block and
    // provide the directory path of local machine
    try (Stream<Path> filepath = Files.walk(Paths.get("C:\\My Documents"))) {
      // Print the entire path of directories and files
      filepath.forEach(System.out::println);
    }
    // Throw an if directory doesn't exists 
    catch (IOException e) {
      throw new IOException("Directory not found!");
    }
  }
}

आउटपुट की पहली कुछ पंक्तियाँ पुष्टि करती हैं कि फ़ाइल ट्रैवर्सल सबसे बड़ी गहराई से शुरू हुआ:

I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\proxy
I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\proxy\page1.html
I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\proxy\page2.html
I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\proxy\page3.html
I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\readOnlyPage.html
I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\rectangles.html
I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\Redirect.aspx
I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\Redirect.aspx.cs
I:\My Documents\Angular\my-app\node_modules\selenium-webdriver\lib\test\data\resultPage.html

हम निर्देशिकाओं को हटाकर भी शामिल कर सकते हैं फ़ाइलें:: नियमित फ़ाइल है फ़िल्टर की स्थिति.

जावा में डायरेक्ट्री नेविगेशन पर अंतिम विचार

जावा किसी निर्देशिका को पार करने के कुछ तरीके प्रदान करता है, यह इस पर निर्भर करता है कि आप किस संस्करण का उपयोग कर रहे हैं। हालाँकि हमने मुख्य को कवर किया है, जावा में निर्देशिकाओं को नेविगेट करने के अन्य तरीके भी हैं, खासकर जब से स्ट्रीम एपीआई जावा 8 में पेश किया गया था।

देखना: मेवेन बिल्ड ऑटोमेशन टूल समीक्षा

Similar Posts