Mit dem FileWriter mit einem vollständigen Pfad
Ich spezifiziert den vollständigen Pfad für den Speicherort der Datei, habe ich ein FileWriter, aber ich sah nicht die Datei, die erstellt wird. Ich habe auch nicht irgendwelche Fehler bei der Erstellung der Datei.
Hier ist ein Ausschnitt von meinem code:
public void writeToFile(String fullpath, String contents) {
File file = new File(fullpath, "contents.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile()));
bw.write(contents);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
fullpath ist "D:/codes/sources/logs/../../bin/logs"
.
Ich habe gesucht meine ganze Verzeichnis, aber ich kann nicht finden die Datei irgendwo.
Wenn ich geben Sie nur den Dateinamen, nur [File Datei = new File("contents.txt");] , es ist in der Lage, sichern Sie den Inhalt der Datei, aber es ist nicht meine bevorzugte Lage.
Wie kann ich die Datei speichern, die Inhalte zu einem bevorzugten Standort?
UPDATE:
Ich druckte den vollständigen Pfad mit Datei.getAbsolutePath(), und ich bin immer der korrekte Verzeichnispfad. [D:\codes\sources\logs....\bin\logs\contents.txt] Aber wenn ich mir für die Datei im Verzeichnis, ich kann ihn nicht finden dort.
- Sie haben buchstäblich die "../.." drin? Wenn dem so ist, müssen Sie sich in
D:/codes/bin/logs
- Auch mit Java 7, können Sie das gleiche tun mit:
Files.write(Paths.get(fullPath), contents.getBytes("UTF-8"));
createNewFile()
ist nicht erforderlich.- Ja, ich habe das "..\.." in den Weg, da ich die Datei speichern möchten, an D:/codes/bin/logs.
- Ich fügte hinzu, dass nach mehreren gescheiterten versuchen schriftlich den Inhalt in eine Datei. 🙂 Werde ich entfernen, sobald ich festgestellt, dass diese Zeile nicht erforderlich.
- Geheimnisvoll. Tun erreichen Sie, dass der code? Wie über einige andere Ausnahme, SecurityException, oder wie? Keine leeren
catch (Throwable e) {}
hoffe ich? - Ich fand die Ursache heraus schon. Es scheint, dass die batch-Datei löschen alle .txt-Dateien nach der Ausführung. Hmpf! Die Fallstricke der Entwickler!
- Die Datei wird erstellt, aber nicht, wo Sie suchen, es sei denn, es war eine Ausnahme. Die
exists()/createNewFile()
block ist eine komplette Verschwendung von Zeit und Raum.new FileWriter()
bewirkt, dass das Betriebssystem auf jeden Fall tun, und jetzt sind Sie und zwingt Sie zum hinzufügen einer Löschung der Datei, die Sie gerade erstellt als gut. Schreiben Sie nicht sinnlos code.new FileWriter(file)
wäre genauso gut. - Haben Sie versucht, um zu sehen, was
file.getCanonicalPath()
gibt? Ist es das, was Sie erwartet? D:\codes\sources\logs....\bin\logs\contents.txt
ist kein Gültiger Pfad. Unklar ist, was Sie gefragt haben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie sicher, fügen nachgestellten umgekehrten Schrägstriche, um den Pfad, parameter, damit der Pfad erkannt wird, wie ein Verzeichnis. Das Beispiel liefern, ist für ein Windows-Betriebssystem verwendet umgekehrte Schrägstriche, die sind entkommen. Für eine stabilere Methode verwenden, die
file.separator
- Eigenschaft für das system.Funktioniert
Nicht Funktioniert
Datei-Trennzeichen Beispiel
File
Objekte zu konstruieren, die den Weg es gibt keine müssen erhalten die Trennzeichen und verketten Sie den vollständigen Pfad mit strings.File(String parent, String child)
kümmert sich nicht darum, nachgestellten (back-)slashes (siehe die javadocs ).