Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Unterverzeichnisse ausgeben (Rekursion)

Suchen Sie in Ihrer Programmiersprache eine Möglichkeit, das aktuelle Verzeichnis ("Current working Directory", auch "Parent working Directory" genannt) auszulesen und alle darin enthaltenen Dateien und Verzeichnisse in Erfahrung zu bringen. Geben Sie diese Liste für einige Verzeichnisse aus.

Suchen Sie eine Möglichkeit zu entscheiden, ob es sich bei einem Eintrag um eine Datei oder um ein Verzeichnis handelt. Markieren Sie in der Ausgabe die Verzeichnisse mit einem "+" und die Dateien mit einem "-".

Geben Sie zuletzt die Verzeichnisse rekursiv (mit allen Unterverzeichnissen) in folgender Form aus:

 

- README.TXT
- Journal.doc
+ Aufgaben
  + Aufgabe_Muenzen
    - Muenzen.java
    - Muenzen.class
  + Aufgabe_Files
    - Files.py
  - README.TXT
- Screenshot.JPG

 

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

2 Lösung(en)

import java.util.Scanner;

import java.io.File;

/**
 * Unterverzeichnisse rekusriv ausgeben
 * @author Philipp Gressly (phi@gressly.ch)
 */
/*
 * History: first Implementation: Sep 9, 2010
 * Bugs   :
 */
public class Unterverzeichnisse {
  public static void main(String[] args) {
    new Unterverzeichnisse().top();}
  
  void top() {
      String pfadName = eingabe("Pfad");
      File pfad = new File(pfadName);
      rekursiveAusgabe(pfad, 0);
  }

  void rekursiveAusgabe(File pfad, int stufe) {
    String[] inhalt = pfad.list();
    for(String knotenName: inhalt) {
        leerschlaege(stufe);
        File knoten = new File(pfad + "/" + knotenName);
        if(knoten.isDirectory()) {
            System.out.print("+");
        } else {
            System.out.print("-");
        }
        System.out.println(knotenName);
        if(knoten.isDirectory()) {
            rekursiveAusgabe(knoten, stufe + 1);
        }
    } 
  }

  void leerschlaege(int stufe) {
     while(stufe > 0) {
         System.out.print("  ");
         stufe = stufe - 1;
     }
  }

  Scanner sc = new Scanner(System.in);
  String eingabe(String was) {
    System.out.println("Bitte geben Sie " + was + " ein:");
    return sc.next(); 
  }
   
} // end of class Unterverzeichnisse
                
import java.io.File;

	

/**

 * Verzeichnise Rekursiv ausgeben

 * @author Dominik Kessler

 * @date   14.02.2011

**/

public class Unterverzeichnis {

	

	int blankZahler = -1;

	

	public static void main(String[] args)

	{

		new Unterverzeichnis().top();

	}



	private void top() {

		verzeichnis("H:\\workspace");

	}



	/**

	* Im Verzeichnis Ordner und Files durchgehen  

	**/

	private void verzeichnis(String directory) {

		blankZahler += 1;

		File file = new File(directory);

				

		for(File fi : file.listFiles())

		{

			fileOrDirectory(fi);

		}

		blankZahler -= 1;

	}



	/**

	* File bestimmen ob es ein File oder ein Verzeichnis ist

	**/

	private void fileOrDirectory(File fi) {

		if(fi.isFile())

		{

			ausgeben("- " + fi.getName());

		}

		if(fi.isDirectory())

		{

			ausgeben("+ " + fi.getName());

			verzeichnis(fi.toString());

		}

	}



	/**

	* File/Verzeichnis mit einrückung ausgeben

	**/

	public void ausgeben(String name)

	{

		for(int i = 0; i<=blankZahler;i++)

		{

			System.out.print(" ");

		}

		System.out.println(name);

	}

}
                

Lösung von: Dominik Kessler (Credit Suisse)

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2
Schwierigkeit: k.A.
Webcode: udy5-egzz
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Zu Aufgabenblatt hinzufügen