Hallo ich entwickle gerade ein Getränkelagerverwaltungssystem für mein Studium. Dabei soll ein separater Thread alle 40 Sekunden prüfen, ob eine Datei namens 'done.csv' vorhanden ist. Falls diese Datei existiert, soll ihr Inhalt in der Konsole angezeigt werden. Nach der Verarbeitung gelöscht.
Hier der bisherige Code:
Problem : Beim Starten der Anwendung wird die 'done.csv'-Datei entdeckt, ausgelesen und anschließend gelöscht. Wenn der Zyklus erneut durchläuft und ich done.csv manuell erstelel und mit Inhalt fülle , wird 'done.csv' erneut gefunden, aber sofort gelöscht, wodurch das Array leer bleibt. Der Inhalt des Array soll nachher an eine andere Methode übergeben werden können, ist aber noch nicht im Code implentiert, Kann mir jemand einen Tipp geben ? Danke
Hier der bisherige Code:
Java:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.concurrent.TimeUnit;
public class ExternalDataChecker implements Runnable {
@Override
public void run() {
while (true) {
try {
// Pfad zur Datei done.csv
String filePath = "resources/done.csv";
File file = new File(filePath);
// Überprüfen, ob die Datei existiert
if (file.exists()) {
try {
// Dateiinhalt auslesen
String content = new String(Files.readAllBytes(Paths.get(filePath)));
// Inhalt in ein Array namens externalData speichern
String[] externalData = content.split(",");
// Ausgabe des Array-Inhalts:
for (String data : externalData) {
System.out.println(data);
}
// Nach der Ausgabe die Datei löschen
if (file.delete()) {
System.out.println("Datei gelöscht.");
} else {
System.err.println("Fehler beim Löschen der Datei.");
}
// Array leeren
externalData = new String[0];
} catch (IOException e) {
System.err.println("Fehler beim Lesen der Datei: " + e.getMessage());
}
} else {
System.out.println("Datei existiert nicht.");
}
// Alle 40 Sekunden erneut überprüfen
TimeUnit.SECONDS.sleep(40);
} catch (InterruptedException e) {
System.err.println("Thread-Unterbrechung: " + e.getMessage());
}
}
}
}
public class Main {
public static void main(String[] args) {
WarehousemanagementModel warehouseModel = new WarehousemanagementModel();
WarehousemanagementController warehouseController = new WarehousemanagementController();
WarehousemanagementView warehouseView = new WarehousemanagementView(warehouseController);
warehouseController.setModel(warehouseModel);
warehouseController.setView(warehouseView);
warehouseView.initializeGUI();
// Erstellen einer Instanz des Runnable
Runnable externalDataChecker = new ExternalDataChecker();
// Erstellen eines Thread für das Runnable und setzen als Hintergrundthread
Thread thread = new Thread(externalDataChecker);
thread.setDaemon(true);
thread.start();
while (true) {
}
}
}