Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht

Park

Mitglied
Hallo Java-Gemeinde,

ich habe ein Jave-Programm geschrieben, das mir eine Datei einlist und weiter verarbeitet. Das Programm wird über die Konsole aufgerufen und läuft soweit einwandfrei.

Probleme ergeben sich, wenn ich das Programm per CronJob aufrufen möchte. Das Programm selbst wird gefunden und gestartet (Crontab funktioniert). Auch die Datei, die gelesen werden soll, wird gefunden. Hängen tut es anscheinend an dem Scanner-Objekt. Das findet zwar die Datei, aber kann sie nicht lesen. Es gibt keine Elemente.

Hat einer von Euch eine Idee, woran das liegen könnte? Und was man dagegen tun kann?

Meine Scanner-Routine:
Java:
private void readFile(String filename){

        //File-Objekt erzeugen
        File f= new File(filename);
        
        //Wenn die Datei nicht existiert. 
        //(Eigentl. doppelt, weil unten in der Exception nochmal behandelt.)
        if (!f.exists()){
            System.out.println("Error: Datei '"+filename+"' nicht gefunden.");
            System.out.println("Stoped.");
            System.exit(-1);
        }

        //Scanner Objekt definieren
        Scanner sc=null;
       
	
        try {
                // Datei in Scanner-Objekt einlesen
                sc= new Scanner(f);   
                System.out.println("New Scanner angelegt");

        } catch(FileNotFoundException e) {
                System.out.println("Error: Datei wurde nicht gefunden!");
        }
        
        //Wenn es KEINE Zeilen zu lesen gibt
        if (!sc.hasNextLine()){
                System.out.println("Keine Zeilen zu lesen ...");            
        }
        
        //Durchlaufe die Datei zeilenweise
        while (sc.hasNextLine()){
            String line = sc.nextLine();
            System.out.println(line);
        }
        
}

Die Ausgabe beim Aufruf per CronJob wäre

Code:
New Scanner angelegt
Keine Zeilen zu lesen ...


Hat jemand eine Idee dazu? Das wäre super!
Vielen Dank und Grüße
Park
 
Ich hab das ganze nun umgebaut und mittels BufferedReader gelöst. Damit läuft auch der Aufruf per Cron.

Hier ein paar Zeilen Code:

Java:
private void readFile(String filename){
        File file = new File(filename);

        if (!file.canRead() || !file.isFile()) {            
            System.exit(0);
        }

        BufferedReader in = null;

        try {
            in = new BufferedReader(new FileReader(filename));
            String zeile = null;
            while ((zeile = in.readLine()) != null) {
                System.out.println(zeile); 
            }
         } catch (IOException e) {
            e.printStackTrace();
         } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                }
            }
         }
}

Das ganze hab ich hier gefunden:
Javabeginners - Eine Datei zeilenweise auslesen

Park
 

Zurück
Oben