als erstes möchte ich gleich mal allen danken, die dieses Forum zu einer so vorzüglichen Wissensquelle machen. Ich beschäftige mich erst seit ein paar Wochen mit Java und habe hier schon viele Lösungen gefunden, die mich immer wieder ein gutes Stück weitergebracht haben.
So, aber jetzt zu meinem ersten "offiziellen" Problem: Ich suche eine Möglichkeit, das aktuelle Programmverzeichnis (also in dem sich die laufende Class-Datei befindet) zu ermitteln. Anschließend möchte ich mit der exists-Methode eines File-Objekts ermitteln, ob eine bestimmte Datei vorhanden ist. Soweit bin ich schon, aber wie komme ich an das Programmverzeichnis?
vielen Dank für die schnelle Antwort. Ich erhalte leider einen Compiler-Fehler: cannot resolve symbol. symbol: constructor File(). Anscheinend kann der Konstructor File() nicht ohne Parameter aufgerufen werden.
Code:
File datei = new File("MeineDatei.txt");
funktioniert zum Beispiel, dafür liefert mir anschließend
Code:
datei.exists;
false zurück, obwohl die Datei im gleichen Verzeichnis wie das Java-Programm vorhanden ist. Ich muss wohl also vor "MeineDatei.txt" noch irgendwie das Programmverzeichnis mit angeben. Nur wie? Klar, ich kann "C:/MeinProgramm/MeineDatei.txt" vollständig angeben, nur möchte ich nicht mit absoluten Pfad-Angaben arbeiten.
import java.io.*;
public class Dateiexistiert{
public static void main(String[] args){
File datei = new File("./MeineDatei.txt");
System.out.println(datei.exists());
}
}
Vielen Dank für die zahlreichen Antworten. Alle drei Lösungen funktionieren (theoretisch). Und jetzt weiß ich auch, wieso ich tagelang nicht weitergekommen bin. Unter meiner NetBeans 3.6-IDE steht "./" oder auch "user.dir" (aus welchem Grund auch immer) für das NetBeans-Installationsverzeichnis. In meinem Fall also "C:/Programme/NetBeans3.6". Mein Projekt nebst Class-Datei liegt aber völlig wo anders unter "C:/Dokumente und Einstellungen/...". Kopiere ich nämlich die abzufragende Datei "MeineDatei.txt" von dort nach "C:/Programme/NetBeans3.6" liefert auch prompt
Code:
datei.exists;
true zurück. Macht doch die ganze IDE irgendwie überflüssig, wenn intern Verzeichnisse "umgebogen" werden. Hat einer von euch vielleicht doch noch einen Tipp, wie man auch innerhalb von NetBeans das aktuelle Programmverzeichnis abfragen kann?
Ich hab's selber gefunden: In NetBeans 3.6 kann unter "Tools -> Options -> Debugging and Executing -> Executing Types -> External Execution -> Working Directory" eine entsprechendes Arbeitsverzeichnis (in diesem Fall mein Verzeichnis mit den Class-Dateien) eingestellt werden. Und schon funktioniert's!