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.

InformationsquelleAutor chris yo | 2013-07-18
Schreibe einen Kommentar