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---------------------------------------------------------------------