Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wiedereinstieg und kann keine Dateien mehr öffnen...
ich war schon sehr lange nicht mehr hier aktiv, habe mich früher mit Java und Groovy beschäftigt und in Eclipse programmiert, zwischenzeitlich aber Python verwendet.
Jetzt sitze ich wieder an einem Java-Projekt unter Mac OS und scheitere beim Einlesen von Dateien bereits dann, wenn ich mit dem Terminal arbeite. Ich kann einfach keine Dateien öffnen, sondern erhalte FileNotFoundExceptions.
Inzwischen bin ich dem Hinweis gefolgt, dass current working directory zu ermitteln:
Java:
class FileTest {
public static void main(String[] args) {
File here = new File("");
System.out.println(here.getAbsolutePath());
}
}
Die Ausgabe ist /Users/pida/javatest, und in eben diesem Verzeichnis liegen auch die Java-Datei und eine Datei test.txt. Dennoch kommt es zu einer FileNotFoundException, wenn ich darauf zugreifen möchte:
Java:
// ob Scanner oder FileInputStream oder..., immer kommt es zu einer FNF-Exception
FileInputStream fis = new FileInputStream("test.txt");
nur so als blöde Idee, versuch mal das ".txt" hinter deiner Textdatei zu entfernen. Der Code sollte anundfürsich korrekt sein, evntl. hast du die Dateiendungen daktiviert und das File heißt test.txt.txt
Eigentlich wollte ich das Java-Forum boykottieren nach allem was hier passiert ist, aber ich helf dir trotzdem
Du machst vieles Falsch.
Ersteres:
Java:
public class Engine{
public static void main(String[] args){
File file = new File("test.txt");
System.out.println(file); //Pfad der in der File angegeben ist.
System.out.println(file.getAbsolutePath()); //Absoluter Pfad
}
}
Denn dein File namens here hat garkeine Definition. Also kann der nix finden.
Beim InputStream muss es so aussehen
Java:
FileInputStream fis = new FileInputStream(new File("test.txt"));
oder
Java:
FileInputStream fis = new FileInputStream(file);
Keine Ahnung wozu du den Stream brauchst aber egal
Ich benutze lieber den BufferedInputStream also so
Java:
BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
Der FileInputStream kann auch ohne dem FileInputStream ein File zu Übergeben etwas damit anfangen.
[TIPP]FileInputStream(String name)
Creates a FileInputStream by opening a connection to an actual file, the file named by the path name name in the file system.[/TIPP]
Das weiß ich, aber ich mache das lieber so wie ich es am Anfang gelernt habe
Aber deine Tipss stimmen auch nicht wirklich und sprechen nicht von viel Erfahrung ^^
Ich wollte dich nur darauf hinweisen, dass der Code von Pida grundsätzlich nicht falsch ist. Und entgegen deiner Erwartungen ist es unter Windoof sehr wohl ein Problem wenn die Dateiendung deaktiviert ist. Es wird nämlich als "test.txt" angezeigt, heißt aber in wirklichkeit "test.txt.txt" und somit findest du das File unter "test.txt" auch nicht Ich versuche doch nur alle Möglichkeiten aus dem Weg zu räumen, denn bei mir funktioniert das Codeschnipsel ausgezeichnet..
@NoXiD: Ich hatte das in verschiedenen Kombinationen probiert, auch der von dir genannten. Hilft alles nichts. Ich kann mir auch nicht vorstellen, dass das Problem beim Betriebssystem (Mac OS, nicht Windows) liegt. Mit verschiedenen anderen Sprachen tritt kein Problem beim Zugriff auf Dateien auf.
@Florilu: NoXiD hatte ja schon auf die Doku hingewiesen, und auch bei mir ändert sich nichts, wenn ich FileInputStream statt des Strings ein File übergebe.
Java:
public class Engine{
public static void main(String[] args){
File file = new File("test.txt");
System.out.println(file); //Pfad der in der File angegeben ist.
System.out.println(file.getAbsolutePath()); //Absoluter Pfad
}
}
Auch dieser Code gibt mir /Users/pida/javatest/test.txt aus. Da liegen auch die Dateien. Dennoch führt dann diese Anweisung zu einer FNF-Exception:
Java:
FileInputStream fis = new FileInputStream(new File("test.txt"));
Ok, wie gesagt wollte ich nur alle anderen Möglichkeiten ausschließen. Also bei mir funktioniert folgender Code einwandfrei:
Code:
public class main {
public static void main(String[]args) throws IOException {
File here = new File("");
System.out.println(here.getAbsolutePath());
FileInputStream fis = new FileInputStream("test.txt");
}
}
mein test.txt liegt im root meines Projektes. Also Javatechnisch sehe ich an deinem Code keinen Fehler :/
achso, dachte daran hast du gedacht da du ja immer nur ein kleines Codeschnipsel angegeben hast
Toll dass ich dir (unbewusst) nun doch noch weiterhelfen konnte! Als kleiner Tipp nebenbei, ich würde eher die Exception per try/catch abfangen und intern behandeln, als sie mit throws einfach zu werfen, aber daran hast du wahrscheinlich eh schon gedacht..