Relativer Pfad zum speichern einer Datei in einem computer - Java
Habe ich verwendet diese Referenz zum Lesen einer Datei auf mein Projekt. aber ich muss speichern, ebenso ich weiß nicht, wie Sie dies tun? bitte helfen Sie mir.
für das Lesen einer Datei, die ich genommen habe den code aus dem link
InputStream csv =
SomeClassInTheSamePackage.class.getResourceAsStream("filename.csv");
Kann mir jemand helfen mit dem schreiben einer Datei
derzeit bin ich mit diesem code:
Writer output = null;
output = new BufferedWriter(new FileWriter("./filename.csv"));
Aber es wirft FileNotFound-Exception zur Laufzeit
Problem mit dem Auffinden der Datei-Pfad. es funktioniert gut, wenn ich einen absoluten Pfad. aber es muss ausgeführt werden, in jedem computer
- Haben Sie versucht, schriftlich zu einfach
'filename.csv'
statt zu'./filename.csv'
? - ja, es funktioniert nicht
- Was ist, wenn
someClassInTheSamePackage
ist nicht in das aktuelle Paket? - Guter Punkt, @VishalK.
- SomeClassInTheSamePackage kennzeichnet jede java-Datei im Paket als Referenz verwenden
- Glaubst du nicht, dass jemanden zum schreiben einer Datei im java-Paket wäre ernsthaftes Sicherheitsproblem?
- Auf diese Weise habe ich zu tun
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den FileWriter erstellen Dateien wie erforderlich. Es muss nicht existieren bereits.
Nur so können Sie diese Fehlermeldung erhalten, ist, wenn das aktuelle Arbeitsverzeichnis nicht mehr vorhanden oder Sie verfügen nicht über die Berechtigung zum erstellen einer Datei im Verzeichnis.
Überprüfen Sie Ihre Berechtigungen:
OK..den folgenden code Verwenden, um den Pfad der Datei:
BEARBEITEN
Hier ist ein Demo-Code, erstellen von Datei -
"pqr.txt"
im PaketmyPackage
. Da ich die Ausführung der class-Datei mit dem Befehljava myPackage.AccessCheck
ich.e aus einem Verzeichnis über die MeinPaket.File.separator
gibt Diesystem-dependent
Standardname-separator
String. Zum Beispiel : Auf Microsoft Windows-Systemen ist es "\"(c:\abc)
.. in der Erwägung, dass in UNIX-Systemen der Wert dieses Feldes ist "/" . Schauen Sie hier für weitere Informationen über diese : docs.oracle.com/javase/1.4.2/docs/api/java/io/...package
und den absoluten Pfad zu dieserfile
. Und mir auch sagen, dass, aus welchem Verzeichnis werden Sie ausführenjava
Befehl."filename.csv"
bedeutet dies, dass er/Sie die Speicherung der Datei im root-Ordner, das ist in Ordnung für mich. Ich meine, beide funktionieren.Statt
getResourceAsStream()
rufenclass.getResource()
oderclassLoader.getResource()
. Diese Funktionen geben eine URL, die den Speicherort der Ressource. Wenn die Ressource ist eine Klartext-Datei auf dem Dateisystem, wird die URL einfile:
URL.Sobald Sie die URL, können Sie es konvertieren zu einem
URI
und übergeben es an dieFile
Konstruktor nimmt eine URI. Dann können Sie dieFile
- Objekt um die Datei zu öffnen.Beachten Sie, dass
getResource()
zurückkehren können URLs, dieFile
Konstruktor nicht umgehen können. Zum Beispiel, wenn die Ressource gefunden wird, die in einer jar-Datei, dann könnte die URL so Aussehen:Den
File
Konstruktor nicht umgehen können mit URLs wie diese. Dies kann oder kann nicht ein Problem für Sie.