Test, ob Datei existiert, schlägt fehl

Wambui

Aktives Mitglied
Hallo,

ich möchte vor dem Start des eigentlichen Programms testen, ob die .settings.cfg-Datei existiert oder erst angelegt werden müsste.
Java:
package com.default;

import java.io.File;
import java.io.FileNotFoundException;

import com.default.gui.MainFrame;

public class Main {

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		try {
			MainFrame m = new MainFrame();
			if (new File(System.getProperties().getProperty("user.home")+File.separator+".settings.cfg").exists()) {
				//m.main(null);
				System.out.println("Settings.cfg existiert");
			}
		} catch (FileNotFoundException e) {
			System.out.println("Datei anlegen!");
			System.out.println("Verzeichnis anlegen");
			/*if (!new File((new Settings().readSettings("directory"))).exists()) {
				System.out.println(new Settings().readSettings("directory") + "anlegen!");
			} else {
				System.out.println(new Settings().readSettings("directory") + "existiert!");
			}*/
		}		

	}

}

Ohne den try-catch-Block mit einer if-else-Verzweigung wird eine FileNotFoundException geworfen, anstelle zum else-Block zu gehen, wenn die Datei nicht existiert. Eigentlich sollte der Part ausgeführt, der zum Datei anlegen auffordert.
Ich habe das ganze dann mit einem try-Catch-Block versucht zu machen. Hier unterstreicht Eclipse das "FileNotFoundException" in der catch-Anwesiung rot und empfiehlt "Remove catch clause" und "Replace catch clause with throws". Beides führt aber wieder zur FileNotFoundException bei der Ausführung.

Wie kann ich also das Vorhandensein der Datei bei Programmstart testen und bei Nichvorhandensein eine Meldung ausgeben? Bzw. wie kann ich die Exception so gestallten, dass das gewünschte Resultat herauskommt?

Gruß
Wambui
 
Entferne das
Code:
MainFrame m = new MainFrame();
... bist du dir sicher, dass dein if-Statement die FileNotFoundExeption wirft? Ein StackTrace würde helfen.
 
Zuletzt bearbeitet:
Wenn du den Stacktrace ausgibst, kann ich dir mehr sagen. Wahrscheinlich nutzt du dort schon deine ".settings.cfg", die noch nicht existiert oder du greifst auf ein Bild zu, dessen Pfad falsch ist ... Stacktrace und ich kann mehr sagen.
 
Die ".settings.cfg" gibt es bereits, nur teste ich die Fälle, wenn sie eben noch nicht da ist.
Es funktioniert ja auch, wenn
Java:
MainFrame m = new MainFrame();
vorne wegnehme. Das brauche ich nur später, um die main-Methode der Main-Klasse für das eigentliche Hauptprogramm.

Ich wollte nur noch verstehen, aber das kriege ich auch so noch heraus. Du hast mir jedensfalls bereits geholfen.

Besten Dank,

Wambui
 

Zurück
Oben