Seite 1 von 1

Test für Java Code

Verfasst: 27 Feb 2022 01:55
von Beppo

Code: Alles auswählen

import java.io.*;									//Java-Paket für Eingabe-Ausgabeoperationen importieren
import java.util.*;									//Java-Paket für z.B. Tastaturabfragen importieren
import java.sql.Timestamp;								//Java-Paket für Zeitermittlung importieren
import javax.swing.filechooser.*;
//Hauptprogramm start-----------------------------------------------------------------------
public class wakeup									//Class = 'Bauplan' des Programms. So muss auch die Java-Datei heißen ("wakeup.java")
{
 public static void main (String args[])						//methode main() = Die Funktion, die beim Starten des Programms automatisch aufgerufen wird.
 {
  char[] aktive_laufwerke = new char[26];						//Einen Speicherort (Array) erzeugen, in dem bis zu 26 (Laufwerks-)buchstaben gespeichert werden können
  int counter_aktive_laufwerke = 0;							//Zähler für die erkannten angeschlossenen Laufwerke erstellen
  Timestamp zeitstempel;								//Objektvariable für den aktuellen Zeitstempel
  FileWriter fw;									//Objektvariable für das Laufwerk und die Datei, in die geschrieben wird 
  Scanner scanner = new Scanner(System.in);						//Objektvariable für die Benutzereingabe von der Tastatur
  FileSystemView fsv = FileSystemView.getFileSystemView();
  //Laufwerkssuche---------------------------------------------------------------------
  for(char lw = 'A'; lw <= 'Z'; lw++)							//Schleife über Laufwerksbuchstabe A bis Z
  {
   File file = new File(lw + ":\\");							//Laufwerksobjekt erzeugen
   if (file.exists())									//Falls Laufwerk mit diesem Buchstaben gefunden:
   {
    aktive_laufwerke[counter_aktive_laufwerke] = lw;						//Das gefundene Laufwerk in das Array schreiben
    counter_aktive_laufwerke++;									//Zähler für gefundene Laufwerke hochsetzen
   }			
  }											
  //Laufwerkssuche abgeschlossen-------------------------------------------------------
  //Auswertung------------------------------------------------------------------------- 
  if(counter_aktive_laufwerke !=0)							//Wenn mindestens 1 Laufwerk gefunden wurde, dann hier weiter:
  {
   for(int i=0;i<counter_aktive_laufwerke;i++)							//Gefundene Laufwerke aus dem Array auslesen
   {
    File file = new File(aktive_laufwerke[i] + ":\\");
    String laufwerk_label = fsv.getSystemDisplayName(file);
    String laufwerk_beschreibung = fsv.getSystemTypeDescription(file);
    System.out.println("["+i+"]   " + laufwerk_label + " " +laufwerk_beschreibung);     //Ordnungsnummer, Laufwerksbuchstaben etc. ausgeben
   }
   System.out.print("Auswahl mit Laufwerksnummer:  ");						//Textausgabe
   String s = scanner.nextLine();								//Auf Laufwerksauswahl warten und Eingabe entgegennehmen
   if(s.length()<3)										//Wenn 1 bis 2 Zeichen eingegeben wurde, hier weiter:
   { 
    int k;
    try													//Prüfen, ob die Eingabe eine Zahl ist:
    {
     k= Integer.parseInt(s);
    }
    catch (Exception e)											//Wenn die Eingabe keine Zahl ist-> Programmende
    {
     System.out.println("Ungültiges Zeichen eingegeben -> Programmende");
     return;
    }													//Ansonsten geht es hier weiter:
    if(k>=0 && k<counter_aktive_laufwerke)								//Wenn die eingegebene Laufwerksnummer in der Liste ist:
    {
     int refresh_time;
     System.out.println("Ausgewähltes Laufwerk: " + aktive_laufwerke[k] + ":\\");
     System.out.print("Refresh Time in Sekunden (20 bis 3600): ");						//Refresh Time eingeben
     s = scanner.nextLine();
     try
     {
      refresh_time= Integer.parseInt(s);
     }
     catch (Exception e)											//Wenn die Eingabe keine Zahl ist-> Programmende
     {
      System.out.println("Ungültiges Zeichen eingegeben -> Programmende");
      return;
     }
     if(refresh_time>=20 && refresh_time<=3600)								//Wenn die eingegeben Zeit im Zeitrahmen ist:
     {														//Hier die Refresh-Methode aufrufen:
      System.out.println("Laufwerk " +  aktive_laufwerke[k] + ":\\" + " wird alle " + refresh_time + " Sekunden aufgeweckt");
      do													//Start von do...while(true) Endlosschleife
      {
       System.out.print(".");											//Pro Durchgang einen Punkt auf der Konsole als Lebenszeichen ausgeben
       try
       {
        Thread.sleep(refresh_time * 1000);									//Versuchen, die Ausführung hier um x Millisekunden auszubremsen
       }
       catch(InterruptedException e)										//Fehlerbehandlung, falls die Bremse nicht funktioniert
       {
        Thread.currentThread().interrupt();
        return;													//Programmende bei Fehler
       }
       zeitstempel = new Timestamp(System.currentTimeMillis());							//Aktuellen Zeitstempel erzeugen
       try
       {
        fw = new FileWriter(aktive_laufwerke[k] + ":\\" + "drive_refresh.txt");					//Versuchen, den Pfad zu öffnen und die Datei erzeugen oder überschreiben
        fw.write("Letzte Aktualisierung von Laufwerk " + aktive_laufwerke[k] + ":\\ : " + zeitstempel.toString());//Zeitstempel in die Datei schreiben
        fw.close();												//Datei schließen
       }
       catch (IOException e)
       {
        System.out.println("Fehler beim Erstellen der Datei " + aktive_laufwerke[k] + ":\\" + "drive_refresh.txt");//Fehler beim Erzeugen, Schreiben oder Schließen der Datei abfangen
       }
      }
      while(true);												//do...while Endlosschleife Ende
     }
     else
     {
      System.out.println("Der angegebene Wert ist ungültig -> Programmende");				//Die eingegebene Refresh Time liegt außerhalb der erlaubten Grenzen, Programmende
     }
    }
    else
    {
     System.out.println("Die angegebene Laufwerksnummer ist ungültig -> Programmende");			//Die eingegebene Laufwerksnummer ist nicht in der Liste, Programmende
    }
   }
   else
   {
    System.out.println("Es wurde mehr als 1 Zeichen eingegeben -> Programmende");		//Mehr als 1 Zeichen eingegeben, Programmende
   }
  }
  else
  {
   System.out.println("Keine Laufwerke erkannt -> Programmende");			//Kein Laufwerk gefunden, Programmende
  }
 }
}
 //Auswertung Ende-----------------------------------------------------------------------
//Hauptprogramm Ende---------------------------------------------------------------------