Classpath Datei an dem gleichen Ort speichern

taskihcp

Mitglied
Hallo Zusammen,

ich will mit einem Button eine Datei überschreiben, soweit so gut. Das Problem ist aber ich will die überschreibene Datei gleichzeitig auch an dem gleichen ort speichern wo ich es geholt habe. Wenn ich eine Datei von einem Verzeichnis hole, verändere und mit dem gleichen Namen speichere (überschreiben) will ich es auch an dem gleichen Verzecihnis speichern. Es muss also das importierte pfad merken und es wieder dorthin speichern. Ist das möglich??

Bitte um Hilfe und danke im Voraus.

mfg
taskihcp
 
Mit file.getCanonicalPath() bekommst du den genauen Pfad, an dem du die Datei findest. Dann musst du noch den Dateinamen abschneiden (die Anzahl Zeichen hinten abschneiden, die dein Dateiname lang ist+einen Schrägstrich). Oder du wurschtelst mit FileOutputStream direkt in der Datei rum. Aber ich halte die erste Möglichkeit für besser.

Und prinzipiell ist alles möglich, was du dir vorstellen kannst. 😉
 
Hallo Gucky,

vielen Dank für die Antwort. file.getCanonicalPath() hatte ich schon gehört aber es ist mir schlecht vorzustellen wie ich es verbinde. Wenn ich nämlich die Datei mit einem Button von einem Ort lade und mit einem anderen Button es überschreibe und noch an dem gleichen Ort speichere scheint es mir bisschen kompliziert zu sein.

und die Sache mit " den Dateinamen abschneiden" habe ich nicht so gut verstanden. kannst du es bitte mit einem kleinen Beispiel erklären?

Danke im Voraus.
 
Ich gehe mal davon aus, dass du den Dateinamen hast.

Java:
String dateiname=[DATEINAME AUS WELCHER QUELLE AUCH IMMER]//Speichert den Dateinamen in einem String. Die Quelle desselben kenne ich leider nicht;
String pfad=file.getCanonicalPath();//Speichert den Pfad der Datei, mitsamt Dateinamen
String pfadOhneDateiname=pfad.substring(0,pfad.length()-dateiname.lenghth()-1;//Speichert einen Stringteil (substring) vom ersten Zeichen (Index 0) bis zum letzten Zeichen, abzüglich der Länge des  Dateinamen und eines weiteren Zeichens (, welches ein Schrägstrich wäre. Unter Windows dürfen am Ende keine Schrägstriche stehen)

Die erste Stelle bei der substring-Methode ist inklusiv, die zweite exklusiv (nicht mit drin). Es kann also gut sein, dass du aus dem "-1" ein "-2" machen musst.

Lass dir zu Testzwecken lieber erstmal den beschnittenen Pfad ausgeben.

Für weitere Fragen zu der substring-Methode empfehle ich dir diese Seite.
 
Zuletzt bearbeitet:
Eine Datei kann man einfach überschreiben. Hier mal ein Beispiel:

Java:
File dir = new File("abc/def");
File file = new File("abc/def/test.txt");

try {
    //erstellt zwei Unterverzeichnisse im aktuellen Verzeichnis
    dir.mkdirs();
    
    //erstellt die Datei und speichert zwei Textzeilen
    PrintWriter out = new PrintWriter(file);
    out.println("erste Zeile");
    out.println("zweite Zeile");
    out.flush();
    out.close();
    
    //öffnet die Datei und liest den Inhalt aus
    BufferedReader in = new BufferedReader(new FileReader(file));
    String line = null;
    while((line = in.readLine()) != null) {
        System.out.println(line);
    }
    in.close();
    
    //öffnet die Datei nocheinmal und überschreibt den Inhalt
    out = new PrintWriter(file);
    out.println("neuer");
    out.println("Text");
    out.flush();
    out.close();
} catch(IOException e) {
    e.printStackTrace();
}
 
Ich danke zuerst für ihre Hilfen.

@ Gucky: ich versuche erstmal mit dem Speichern des pfades 🙂
@ DrZoidberg:dein code muss ich zuerst mit meinen anpassen aber zuerst versuche ich meine 🙂)

auf jeden Fall melde ich mich in den nächsten Tagen zurück wie es gelaufen ist.

Gruß
taskihcp
 
Hallo Zusammen,

also ich gebe mal die code:

XdevFile exfile = UIUtils.showFileChooser("Laden",null,null);
try
{
Reader sr = exfile.openReader();
test.VT.importCSV(sr);
sr.close();
}
catch(IOException e)
{
e.printStackTrace();
}

damit lade ich meine datei mit einem Buttonklick.

dann habe ich einen "schreibe" Button womit ich geladene dateien überschreiben kann

die methode zu überschreiben heisst vtwrite().

Die frage ist also überschreiben geht aber datei in dem gleichen Ort speichern ist das Problem.

Wie kann ich beim laden das pfad merken und an Speichern button übergeben generell speichert man eine datei folgendes:

XdevFile exfile = new XdevFile(".\\hallo.csv");

try
{
Writer swr = exfile.openWriter();
test.VT.exportCSV(swr,0);
swr.close();
}
catch(IOException e)
{
e.printStackTrace();
}

gruß
taskihcp
 
Verwende das selbe XdevFile Objekt.
Also z.b.
Java:
XdevFile exfile = UIUtils.showFileChooser("Laden",null,null);
try {
    Reader sr = exfile.openReader();
    test.VT.importCSV(sr);
    sr.close();

    Writer swr = exfile.openWriter();
    test.VT.exportCSV(swr,0);
    swr.close();
} catch(IOException e) {
    e.printStackTrace();
}
 
Zuletzt bearbeitet:
es ist in der vt (virtuelle tabelle ) eingetragen

das code für den "Lade" Button sieht so aus:
XdevFile exfile = UIUtils.showFileChooser("Laden",null,null);
try
{
Reader sr = exfile.openReader();
test.VT.importCSV(sr);
sr.close();
}
catch(IOException e)
{
e.printStackTrace();
}

und für den Speicher Button so :

XdevFile exfile = UIUtils.showFileChooser("Speichern",null,null);
try
{
Writer swr = exfile.openWriter();
test.VT.exportCSV(swr,0);
swr.close();
}
catch(IOException e)
{
e.printStackTrace();
}

Das was der DrZoidberg vorgeschlagen hat ist auch keine schlechte idee nur,
mit UIUtils.showFileChooser("Laden",null,null); wird ein Dialog box wie speichern unter geöffnet,
sowas will ich aber nicht. werde ich es aber trotzdem versuchen
 

Zurück
Oben